diff --git a/DEPS b/DEPS
index 1fbc921..2659d0be 100644
--- a/DEPS
+++ b/DEPS
@@ -181,11 +181,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling Skia
   # and whatever else without interference from each other.
-  'skia_revision': 'fca88b6504045731b3e8605abf544b15cc7e2a81',
+  'skia_revision': 'e4ddb8a7cddc6335cf828fce53d9d04f287389d1',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling V8
   # and whatever else without interference from each other.
-  'v8_revision': '0537aa80179c8c1ff187149b026b1e5e723c4d90',
+  'v8_revision': '261523f920214635c014dde7aba432beb12b80e3',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling swarming_client
   # and whatever else without interference from each other.
@@ -193,11 +193,11 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ANGLE
   # and whatever else without interference from each other.
-  'angle_revision': '135f8fcba837098a5ee0ed699d59445716908825',
+  'angle_revision': '2439a3af02eb9cce6c59781a0ed90b6ade99e7c4',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling SwiftShader
   # and whatever else without interference from each other.
-  'swiftshader_revision': 'f324fe10ca659922a060f974ffb2027d7cea7d53',
+  'swiftshader_revision': 'cb4d2c38a3430437b1fceeb1d066e2d98d1916b1',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling PDFium
   # and whatever else without interference from each other.
@@ -244,7 +244,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling catapult
   # and whatever else without interference from each other.
-  'catapult_revision': '6b345995a82794d776ed6b20202b5dbcc6845619',
+  'catapult_revision': '68125d90962143a4d502068cd45fef7a98f4fbe4',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libFuzzer
   # and whatever else without interference from each other.
@@ -252,7 +252,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling devtools-frontend
   # and whatever else without interference from each other.
-  'devtools_frontend_revision': '3df70e9c609d0af3984133ac8bf2a053548490f6',
+  'devtools_frontend_revision': '10e83a92760cad40e2c73948c5c45f02bf2b1196',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling libprotobuf-mutator
   # and whatever else without interference from each other.
@@ -316,7 +316,7 @@
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling feed
   # and whatever else without interference from each other.
-  'quiche_revision': 'f579b5e51aaf2224e9c80ff1fb4606492bd0cba4',
+  'quiche_revision': 'dfabdfb6884bf8ccd92c6f818aa8764a84f5a984',
   # Three lines of non-changing comments so that
   # the commit queue can handle CLs rolling ios_webkit
   # and whatever else without interference from each other.
@@ -554,7 +554,7 @@
   },
 
   'src/ios/third_party/material_roboto_font_loader_ios/src': {
-      'url': Var('chromium_git') + '/external/github.com/material-foundation/material-roboto-font-loader-ios.git' + '@' + 'bc63eabbbd1e14cee0779b05827e08db2e413553',
+      'url': Var('chromium_git') + '/external/github.com/material-foundation/material-roboto-font-loader-ios.git' + '@' + '4aa51e906e5671c71d24e991f1f10d782a58409f',
       'condition': 'checkout_ios',
   },
 
@@ -1297,7 +1297,7 @@
   },
 
   'src/third_party/perfetto':
-    Var('android_git') + '/platform/external/perfetto.git' + '@' + 'aa94421bfd1f15e3338caf194cc175c899efbb5f',
+    Var('android_git') + '/platform/external/perfetto.git' + '@' + '6ce872b758f428a5dcbcc683c8c304d958a5ea8d',
 
   'src/third_party/perl': {
       'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3',
@@ -1501,7 +1501,7 @@
     Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'ec18cc3262922e7dcdbe70243c6f40606f979144',
 
   'src/third_party/webrtc':
-    Var('webrtc_git') + '/src.git' + '@' + 'ede69c0fbe58b2e2456c89f640d4cf79602fd5f6',
+    Var('webrtc_git') + '/src.git' + '@' + '00a30873c415d717af8dcdf21c2df7fd4b6d1ed2',
 
   'src/third_party/libgifcodec':
      Var('skia_git') + '/libgifcodec' + '@'+  Var('libgifcodec_revision'),
@@ -1571,7 +1571,7 @@
     Var('chromium_git') + '/v8/v8.git' + '@' +  Var('v8_revision'),
 
   'src-internal': {
-    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@1d7da3cc922f0a1f9e9fcacae685c67a1a99daa5',
+    'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@35101480671e9f78771bd2c2dd8506984b34631a',
     'condition': 'checkout_src_internal',
   },
 
diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn
index 62e2cecb..fd4b032 100644
--- a/android_webview/BUILD.gn
+++ b/android_webview/BUILD.gn
@@ -367,6 +367,7 @@
     "java/src/org/chromium/android_webview/AwContentsLifecycleNotifier.java",
     "java/src/org/chromium/android_webview/AwContentsStatics.java",
     "java/src/org/chromium/android_webview/AwCookieManager.java",
+    "java/src/org/chromium/android_webview/AwDataDirLock.java",
     "java/src/org/chromium/android_webview/AwDebug.java",
     "java/src/org/chromium/android_webview/AwDevToolsServer.java",
     "java/src/org/chromium/android_webview/AwFeatureList.java",
diff --git a/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java b/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
index 2fbeed9..c8bf1e7 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
@@ -8,7 +8,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
-import android.os.Build;
 import android.os.IBinder;
 import android.os.ParcelFileDescriptor;
 import android.os.RemoteException;
@@ -43,8 +42,6 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.io.RandomAccessFile;
-import java.nio.channels.FileLock;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -57,15 +54,12 @@
     private static final String TAG = "AwBrowserProcess";
 
     private static final String WEBVIEW_DIR_BASENAME = "webview";
-    private static final String EXCLUSIVE_LOCK_FILE = "webview_data.lock";
 
     // To avoid any potential synchronization issues we post all minidump-copying actions to
     // the same sequence to be run serially.
     private static final TaskRunner sSequencedTaskRunner =
             PostTask.createSequencedTaskRunner(TaskTraits.BEST_EFFORT_MAY_BLOCK);
 
-    private static RandomAccessFile sLockFile;
-    private static FileLock sExclusiveFileLock;
     private static String sWebViewPackageName;
 
     /**
@@ -118,7 +112,7 @@
     public static void start() {
         try (ScopedSysTraceEvent e1 = ScopedSysTraceEvent.scoped("AwBrowserProcess.start")) {
             final Context appContext = ContextUtils.getApplicationContext();
-            tryObtainingDataDirLock(appContext);
+            AwDataDirLock.lock(appContext);
             // We must post to the UI thread to cover the case that the user
             // has invoked Chromium startup by using the (thread-safe)
             // CookieManager rather than creating a WebView.
@@ -148,43 +142,6 @@
         }
     }
 
-    private static void tryObtainingDataDirLock(final Context appContext) {
-        try (ScopedSysTraceEvent e1 =
-                        ScopedSysTraceEvent.scoped("AwBrowserProcess.tryObtainingDataDirLock")) {
-            // Many existing apps rely on this even though it's known to be unsafe.
-            // Make it fatal when on P for apps that target P or higher
-            boolean dieOnFailure = Build.VERSION.SDK_INT >= Build.VERSION_CODES.P
-                    && appContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.P;
-
-            StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites();
-            try {
-                String dataPath = PathUtils.getDataDirectory();
-                File lockFile = new File(dataPath, EXCLUSIVE_LOCK_FILE);
-                boolean success = false;
-                try {
-                    // Note that the file is kept open intentionally.
-                    sLockFile = new RandomAccessFile(lockFile, "rw");
-                    sExclusiveFileLock = sLockFile.getChannel().tryLock();
-                    success = sExclusiveFileLock != null;
-                } catch (IOException e) {
-                    Log.w(TAG, "Failed to create lock file " + lockFile, e);
-                }
-                if (!success) {
-                    final String error =
-                            "Using WebView from more than one process at once with the "
-                            + "same data directory is not supported. https://crbug.com/558377";
-                    if (dieOnFailure) {
-                        throw new RuntimeException(error);
-                    } else {
-                        Log.w(TAG, error);
-                    }
-                }
-            } finally {
-                StrictMode.setThreadPolicy(oldPolicy);
-            }
-        }
-    }
-
     public static void setWebViewPackageName(String webViewPackageName) {
         assert sWebViewPackageName == null || sWebViewPackageName.equals(webViewPackageName);
         sWebViewPackageName = webViewPackageName;
diff --git a/android_webview/java/src/org/chromium/android_webview/AwDataDirLock.java b/android_webview/java/src/org/chromium/android_webview/AwDataDirLock.java
new file mode 100644
index 0000000..1026715
--- /dev/null
+++ b/android_webview/java/src/org/chromium/android_webview/AwDataDirLock.java
@@ -0,0 +1,151 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.android_webview;
+
+import android.content.Context;
+import android.os.Build;
+import android.os.Process;
+import android.system.ErrnoException;
+import android.system.Os;
+import android.system.OsConstants;
+
+import org.chromium.base.ContextUtils;
+import org.chromium.base.Log;
+import org.chromium.base.PathUtils;
+import org.chromium.base.StrictModeContext;
+import org.chromium.base.metrics.CachedMetrics.LinearCountHistogramSample;
+import org.chromium.base.metrics.ScopedSysTraceEvent;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.nio.channels.FileLock;
+
+/**
+ * Handles locking the WebView's data directory, to prevent concurrent use from
+ * more than one process.
+ */
+abstract class AwDataDirLock {
+    private static final String TAG = "AwDataDirLock";
+
+    private static final String EXCLUSIVE_LOCK_FILE = "webview_data.lock";
+    private static final int LOCK_RETRIES = 5;
+    private static final int LOCK_SLEEP_MS = 100;
+    private static final String LOCK_ATTEMPTS_HISTOGRAM_NAME =
+            "Android.WebView.Startup.DataDirLockAttempts";
+
+    private static RandomAccessFile sLockFile;
+    private static FileLock sExclusiveFileLock;
+
+    static void lock(final Context appContext) {
+        try (ScopedSysTraceEvent e1 = ScopedSysTraceEvent.scoped("AwDataDirLock.lock");
+                StrictModeContext ignored = StrictModeContext.allowDiskWrites()) {
+            String dataPath = PathUtils.getDataDirectory();
+            File lockFile = new File(dataPath, EXCLUSIVE_LOCK_FILE);
+
+            try {
+                // Note that the file is kept open intentionally.
+                sLockFile = new RandomAccessFile(lockFile, "rw");
+
+                // Some Android versions may have a race where a new instance of an app process can
+                // be started while an existing one is still in the process of being killed. Retry
+                // the lock a few times to give the old process time to fully go away.
+                for (int attempts = 1; attempts <= LOCK_RETRIES; ++attempts) {
+                    sExclusiveFileLock = sLockFile.getChannel().tryLock();
+                    if (sExclusiveFileLock != null) {
+                        // We got the lock; write out info for debugging.
+                        writeCurrentProcessInfo(sLockFile);
+                        recordLockAttempts(attempts);
+                        return;
+                    }
+
+                    // If we're not out of retries, sleep and try again.
+                    if (attempts == LOCK_RETRIES) break;
+                    try {
+                        Thread.sleep(LOCK_SLEEP_MS);
+                    } catch (InterruptedException e) {
+                    }
+                }
+            } catch (IOException e) {
+                // Failing to create the lock file is always fatal; even if multiple processes are
+                // using the same data directory we should always be able to access the file itself.
+                throw new RuntimeException("Failed to create lock file " + lockFile, e);
+            }
+
+            // We failed to get the lock even after retrying.
+            // Many existing apps rely on this even though it's known to be unsafe.
+            // Make it fatal when on P for apps that target P or higher
+            String error = getLockFailureReason(sLockFile);
+            boolean dieOnFailure = Build.VERSION.SDK_INT >= Build.VERSION_CODES.P
+                    && appContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.P;
+            if (dieOnFailure) {
+                throw new RuntimeException(error);
+            } else {
+                Log.w(TAG, error);
+                // Record an attempt count of 0 to indicate that we proceeded without the lock.
+                recordLockAttempts(0);
+            }
+        }
+    }
+
+    private static void writeCurrentProcessInfo(final RandomAccessFile file) {
+        try {
+            // Truncate the file first to get rid of old data.
+            file.setLength(0);
+            file.writeInt(Process.myPid());
+            file.writeUTF(ContextUtils.getProcessName());
+        } catch (IOException e) {
+            // Don't crash just because something failed here, as it's only for debugging.
+            Log.w(TAG, "Failed to write info to lock file", e);
+        }
+    }
+
+    private static void recordLockAttempts(int attempts) {
+        // We log values from [0, LOCK_RETRIES]. Histogram samples are expected to be [0, max).
+        // 0 just goes to the underflow bucket, so min=1 and max=LOCK_RETRIES+1.
+        // To get bucket width 1, buckets must be max-min+2
+        LinearCountHistogramSample histogram = new LinearCountHistogramSample(
+                LOCK_ATTEMPTS_HISTOGRAM_NAME, 1, LOCK_RETRIES + 1, LOCK_RETRIES + 2);
+        histogram.record(attempts);
+    }
+
+    private static String getLockFailureReason(final RandomAccessFile file) {
+        final String baseError = "Using WebView from more than one process at once with the "
+                + "same data directory is not supported. https://crbug.com/558377 : Lock owner ";
+        try {
+            int pid = file.readInt();
+            String processName = file.readUTF();
+            String lockOwner = processName + " (pid " + pid + ")";
+
+            // Check the status of the pid holding the lock by sending it a null signal.
+            // This doesn't actually send a signal, just runs the kernel access checks.
+            try {
+                Os.kill(pid, 0);
+
+                // No exception means the process exists and has the same uid as us, so is
+                // probably an instance of the same app.
+                return baseError + lockOwner;
+            } catch (ErrnoException e) {
+                if (e.errno == OsConstants.ESRCH) {
+                    // pid did not exist - the lock should have been released by the kernel,
+                    // so this process info is probably wrong.
+                    return baseError + lockOwner + " doesn't exist!";
+                } else if (e.errno == OsConstants.EPERM) {
+                    // pid existed but didn't have the same uid as us.
+                    // Most likely the pid has just been recycled for a new process
+                    return baseError + lockOwner + " pid has been reused!";
+                } else {
+                    // EINVAL is the only other documented return value for kill(2) and should never
+                    // happen for signal 0, so just complain generally.
+                    return baseError + lockOwner + " status unknown!";
+                }
+            }
+        } catch (IOException e) {
+            // We'll get IOException if we failed to read the pid and process name; e.g. if the
+            // lockfile is from an old version of WebView or an IO error occurred somewhere.
+            return baseError + "unknown";
+        }
+    }
+}
diff --git a/android_webview/nonembedded/java/proguard.flags b/android_webview/nonembedded/java/proguard.flags
index a267472..1f97557 100644
--- a/android_webview/nonembedded/java/proguard.flags
+++ b/android_webview/nonembedded/java/proguard.flags
@@ -39,8 +39,11 @@
 -keep class com.android.webview.chromium.DrawGLFunctor
 -keep class com.android.webview.chromium.GraphicsUtils
 
--keep class org.chromium.android_webview.AwBrowserProcess {
+# The lock file object must be kept explicitly to avoid it being optimized
+# away and the lock released by the object's finalizer.
+-keep class org.chromium.android_webview.AwDataDirLock {
     java.nio.channels.FileLock sExclusiveFileLock;
+    java.io.RandomAccessFile sLockFile;
 }
 
 # Workaround for crbug/1002847. Methods of BaseGmsClient are incorrectly
diff --git a/ash/home_screen/drag_window_from_shelf_controller.cc b/ash/home_screen/drag_window_from_shelf_controller.cc
index 4c97041a..ab728d1 100644
--- a/ash/home_screen/drag_window_from_shelf_controller.cc
+++ b/ash/home_screen/drag_window_from_shelf_controller.cc
@@ -9,7 +9,6 @@
 #include "ash/home_screen/home_screen_delegate.h"
 #include "ash/home_screen/window_scale_animation.h"
 #include "ash/public/cpp/shelf_config.h"
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
 #include "ash/scoped_animation_disabler.h"
@@ -260,7 +259,7 @@
       window_drag_result = ShelfWindowDragResult::kGoToSplitviewMode;
     // For window that may drop in overview or snap in split screen, restore its
     // original backdrop mode.
-    WindowBackdrop::Get(window_)->RestoreBackdrop();
+    window_->SetProperty(kBackdropWindowMode, original_backdrop_mode_);
   }
 
   OnDragEnded(location_in_screen, drop_window_in_overview, snap_position);
@@ -274,7 +273,7 @@
   drag_started_ = false;
   // Reset the window's transform to identity transform.
   window_->SetTransform(gfx::Transform());
-  WindowBackdrop::Get(window_)->RestoreBackdrop();
+  window_->SetProperty(kBackdropWindowMode, original_backdrop_mode_);
 
   // End overview if it was opened during dragging.
   OverviewController* overview_controller = Shell::Get()->overview_controller();
@@ -320,7 +319,8 @@
       initial_location_in_screen_, HTCLIENT, ::wm::WINDOW_MOVE_SOURCE_TOUCH);
 
   // Disable the backdrop on the dragged window during dragging.
-  WindowBackdrop::Get(window_)->DisableBackdrop();
+  original_backdrop_mode_ = window_->GetProperty(kBackdropWindowMode);
+  window_->SetProperty(kBackdropWindowMode, BackdropWindowMode::kDisabled);
 
   // Hide all visible windows behind the dragged window during dragging.
   windows_hider_ = std::make_unique<WindowsHider>(window_);
@@ -632,6 +632,8 @@
     // self-destructed when window transform animation is done.
     new WindowScaleAnimation(
         window, WindowScaleAnimation::WindowScaleType::kScaleDownToShelf,
+        window == window_ ? base::make_optional(original_backdrop_mode_)
+                          : base::nullopt,
         window == window_
             ? base::BindOnce(
                   &DragWindowFromShelfController::OnWindowScaledDownAfterDrag,
@@ -659,6 +661,8 @@
   for (auto* window : GetTransientTreeIterator(window_)) {
     new WindowScaleAnimation(
         window, WindowScaleAnimation::WindowScaleType::kScaleUpToRestore,
+        window == window_ ? base::make_optional(original_backdrop_mode_)
+                          : base::nullopt,
         base::BindOnce(
             &DragWindowFromShelfController::OnWindowRestoredToOrignalBounds,
             weak_ptr_factory_.GetWeakPtr(), should_end_overview));
diff --git a/ash/home_screen/drag_window_from_shelf_controller.h b/ash/home_screen/drag_window_from_shelf_controller.h
index 30d3e43..abda8b7 100644
--- a/ash/home_screen/drag_window_from_shelf_controller.h
+++ b/ash/home_screen/drag_window_from_shelf_controller.h
@@ -186,6 +186,7 @@
   gfx::PointF initial_location_in_screen_;
   gfx::PointF previous_location_in_screen_;
   bool drag_started_ = false;
+  BackdropWindowMode original_backdrop_mode_ = BackdropWindowMode::kAutoOpaque;
 
   // Hide all eligible windows during window dragging. Depends on different
   // scenarios, we may or may not reshow there windows when drag ends.
diff --git a/ash/home_screen/drag_window_from_shelf_controller_unittest.cc b/ash/home_screen/drag_window_from_shelf_controller_unittest.cc
index 36422ef1..4d29cec 100644
--- a/ash/home_screen/drag_window_from_shelf_controller_unittest.cc
+++ b/ash/home_screen/drag_window_from_shelf_controller_unittest.cc
@@ -9,7 +9,6 @@
 #include "ash/home_screen/home_screen_delegate.h"
 #include "ash/public/cpp/overview_test_api.h"
 #include "ash/public/cpp/test/shell_test_api.h"
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/root_window_controller.h"
 #include "ash/shelf/shelf.h"
 #include "ash/shell.h"
@@ -540,8 +539,8 @@
       Shelf::ForWindow(Shell::GetPrimaryRootWindow())->GetIdealBounds();
   auto window = CreateTestWindow();
   EXPECT_TRUE(window->layer()->GetTargetTransform().IsIdentity());
-  WindowBackdrop* window_backdrop = WindowBackdrop::Get(window.get());
-  EXPECT_NE(window_backdrop->mode(), WindowBackdrop::BackdropMode::kDisabled);
+  EXPECT_NE(window->GetProperty(kBackdropWindowMode),
+            BackdropWindowMode::kDisabled);
 
   StartDrag(window.get(), shelf_bounds.left_center(), HotseatState::kExtended);
   Drag(gfx::Point(0, 200), 0.f, 10.f);
@@ -549,8 +548,8 @@
           base::make_optional(
               -DragWindowFromShelfController::kVelocityToHomeScreenThreshold));
   EXPECT_FALSE(window->layer()->GetTargetTransform().IsIdentity());
-  EXPECT_NE(window_backdrop->mode(), WindowBackdrop::BackdropMode::kDisabled);
-  EXPECT_TRUE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
+            BackdropWindowMode::kDisabled);
 }
 
 // Test that if drag is cancelled, overview should be dismissed and other
@@ -788,13 +787,14 @@
   const gfx::Rect shelf_bounds =
       Shelf::ForWindow(Shell::GetPrimaryRootWindow())->GetIdealBounds();
   auto window = CreateTestWindow();
-  WindowBackdrop* window_backdrop = WindowBackdrop::Get(window.get());
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  BackdropWindowMode original_backdrop_mode =
+      window->GetProperty(kBackdropWindowMode);
+  EXPECT_NE(original_backdrop_mode, BackdropWindowMode::kDisabled);
 
   // For window that ends in overview:
   StartDrag(window.get(), shelf_bounds.CenterPoint(), HotseatState::kExtended);
-  EXPECT_TRUE(window_backdrop->temporarily_disabled());
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
+            BackdropWindowMode::kDisabled);
   Drag(gfx::Point(200, 200), 0.f, 1.f);
   DragWindowFromShelfControllerTestApi().WaitUntilOverviewIsShown(
       window_drag_controller());
@@ -803,14 +803,13 @@
   EXPECT_TRUE(overview_controller->InOverviewSession());
   EXPECT_TRUE(overview_controller->overview_session()->IsWindowInOverview(
       window.get()));
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
-  EXPECT_FALSE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode), original_backdrop_mode);
 
   // For window that ends in homescreen:
   wm::ActivateWindow(window.get());
   StartDrag(window.get(), shelf_bounds.CenterPoint(), HotseatState::kExtended);
-  EXPECT_TRUE(window_backdrop->temporarily_disabled());
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
+            BackdropWindowMode::kDisabled);
   Drag(gfx::Point(200, 200), 0.f, 1.f);
   DragWindowFromShelfControllerTestApi().WaitUntilOverviewIsShown(
       window_drag_controller());
@@ -818,42 +817,38 @@
           base::make_optional(
               -DragWindowFromShelfController::kVelocityToHomeScreenThreshold));
   EXPECT_TRUE(WindowState::Get(window.get())->IsMinimized());
-  EXPECT_FALSE(window_backdrop->temporarily_disabled());
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode), original_backdrop_mode);
 
   // For window that restores to its original bounds:
   wm::ActivateWindow(window.get());
   StartDrag(window.get(), shelf_bounds.CenterPoint(), HotseatState::kExtended);
-  EXPECT_TRUE(window_backdrop->temporarily_disabled());
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
+            BackdropWindowMode::kDisabled);
   Drag(gfx::Point(200, 200), 0.f, 1.f);
   EndDrag(shelf_bounds.CenterPoint(), base::nullopt);
-  EXPECT_FALSE(window_backdrop->temporarily_disabled());
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode), original_backdrop_mode);
 
   // For window that ends in homescreen because overview did not start during
   // the gesture:
   wm::ActivateWindow(window.get());
   StartDrag(window.get(), shelf_bounds.CenterPoint(), HotseatState::kExtended);
-  EXPECT_TRUE(window_backdrop->temporarily_disabled());
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
+            BackdropWindowMode::kDisabled);
   EndDrag(gfx::Point(0, 200), base::nullopt);
   EXPECT_TRUE(WindowState::Get(window.get())->IsMinimized());
-  EXPECT_FALSE(window_backdrop->temporarily_disabled());
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode), original_backdrop_mode);
 
   // For window that ends in splitscreen:
   wm::ActivateWindow(window.get());
   StartDrag(window.get(), shelf_bounds.CenterPoint(), HotseatState::kExtended);
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
-  EXPECT_TRUE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
+            BackdropWindowMode::kDisabled);
   Drag(gfx::Point(200, 200), 0.f, 1.f);
   DragWindowFromShelfControllerTestApi().WaitUntilOverviewIsShown(
       window_drag_controller());
   EndDrag(gfx::Point(0, 200), base::nullopt);
   EXPECT_TRUE(split_view_controller()->IsWindowInSplitView(window.get()));
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
-  EXPECT_FALSE(window_backdrop->temporarily_disabled());
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode), original_backdrop_mode);
 }
 
 TEST_F(DragWindowFromShelfControllerTest,
diff --git a/ash/home_screen/home_screen_controller.cc b/ash/home_screen/home_screen_controller.cc
index 0d35cab..b4c961e 100644
--- a/ash/home_screen/home_screen_controller.cc
+++ b/ash/home_screen/home_screen_controller.cc
@@ -206,11 +206,19 @@
                        display_id));
 
     for (auto* active_window : active_windows) {
+      BackdropWindowMode original_backdrop_mode =
+          active_window->GetProperty(kBackdropWindowMode);
+      active_window->SetProperty(kBackdropWindowMode,
+                                 BackdropWindowMode::kDisabled);
+
       // Do the scale-down transform for the entire transient tree.
       for (auto* window : GetTransientTreeIterator(active_window)) {
         // Self-destructed when window transform animation is done.
         new WindowScaleAnimation(
             window, WindowScaleAnimation::WindowScaleType::kScaleDownToShelf,
+            window == active_window
+                ? base::make_optional(original_backdrop_mode)
+                : base::nullopt,
             window == active_window ? window_transforms_callback
                                     : base::NullCallback());
       }
diff --git a/ash/home_screen/window_scale_animation.cc b/ash/home_screen/window_scale_animation.cc
index 291f3d1..2bf26544f 100644
--- a/ash/home_screen/window_scale_animation.cc
+++ b/ash/home_screen/window_scale_animation.cc
@@ -5,7 +5,6 @@
 #include "ash/home_screen/window_scale_animation.h"
 
 #include "ash/public/cpp/shelf_config.h"
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/scoped_animation_disabler.h"
 #include "ash/screen_util.h"
@@ -13,6 +12,9 @@
 #include "ash/shell.h"
 #include "ash/wm/window_state.h"
 #include "ash/wm/window_util.h"
+#include "ash/wm/workspace/backdrop_controller.h"
+#include "ash/wm/workspace/workspace_layout_manager.h"
+#include "ash/wm/workspace_controller.h"
 #include "base/time/time.h"
 #include "ui/aura/window.h"
 #include "ui/compositor/layer.h"
@@ -39,14 +41,20 @@
 
 }  // namespace
 
-WindowScaleAnimation::WindowScaleAnimation(aura::Window* window,
-                                           WindowScaleType scale_type,
-                                           base::OnceClosure opt_callback)
+WindowScaleAnimation::WindowScaleAnimation(
+    aura::Window* window,
+    WindowScaleType scale_type,
+    base::Optional<BackdropWindowMode> original_backdrop_mode,
+    base::OnceClosure opt_callback)
     : window_(window),
+      original_backdrop_mode_(original_backdrop_mode),
       opt_callback_(std::move(opt_callback)),
-      scale_type_(scale_type) {
+      scale_type_(scale_type),
+      scoped_backdrop_update_pause_(GetWorkspaceControllerForContext(window)
+                                        ->layout_manager()
+                                        ->backdrop_controller()
+                                        ->PauseUpdates()) {
   window_observer_.Add(window);
-  WindowBackdrop::Get(window)->DisableBackdrop();
 
   ui::ScopedLayerAnimationSettings settings(window_->layer()->GetAnimator());
   settings.SetTransitionDuration(kWindowScaleUpOrDownTime);
@@ -78,7 +86,8 @@
     window_->layer()->SetTransform(gfx::Transform());
     window_->layer()->SetOpacity(1.f);
   }
-  WindowBackdrop::Get(window_)->RestoreBackdrop();
+  if (original_backdrop_mode_.has_value())
+    window_->SetProperty(kBackdropWindowMode, *original_backdrop_mode_);
 
   delete this;
 }
diff --git a/ash/home_screen/window_scale_animation.h b/ash/home_screen/window_scale_animation.h
index 24b9c9c..f001d172 100644
--- a/ash/home_screen/window_scale_animation.h
+++ b/ash/home_screen/window_scale_animation.h
@@ -36,6 +36,7 @@
   WindowScaleAnimation(
       aura::Window* window,
       WindowScaleType scale_type,
+      base::Optional<BackdropWindowMode> original_backdrop_mode,
       base::OnceClosure opt_callback);
   ~WindowScaleAnimation() override;
 
@@ -51,10 +52,15 @@
   gfx::Transform GetWindowTransformToShelf();
 
   aura::Window* window_;
+  base::Optional<BackdropWindowMode> original_backdrop_mode_;
   base::OnceClosure opt_callback_;
 
   const WindowScaleType scale_type_;
 
+  // When the window scale animation is in progress, we should pause the
+  // backdrop update.
+  base::ScopedClosureRunner scoped_backdrop_update_pause_;
+
   ScopedObserver<aura::Window, aura::WindowObserver> window_observer_{this};
 
   DISALLOW_COPY_AND_ASSIGN(WindowScaleAnimation);
diff --git a/ash/login/login_screen_controller.cc b/ash/login/login_screen_controller.cc
index 3572029..8c8d0fe 100644
--- a/ash/login/login_screen_controller.cc
+++ b/ash/login/login_screen_controller.cc
@@ -446,12 +446,14 @@
   client_->ShowResetScreen();
 }
 
-void LoginScreenController::ShowAccountAccessHelpApp() {
-  client_->ShowAccountAccessHelpApp();
+void LoginScreenController::ShowAccountAccessHelpApp(
+    gfx::NativeWindow parent_window) {
+  client_->ShowAccountAccessHelpApp(parent_window);
 }
 
-void LoginScreenController::ShowParentAccessHelpApp() {
-  client_->ShowParentAccessHelpApp();
+void LoginScreenController::ShowParentAccessHelpApp(
+    gfx::NativeWindow parent_window) {
+  client_->ShowParentAccessHelpApp(parent_window);
 }
 
 void LoginScreenController::ShowLockScreenNotificationSettings() {
diff --git a/ash/login/login_screen_controller.h b/ash/login/login_screen_controller.h
index 6f60734..2d655dbe 100644
--- a/ash/login/login_screen_controller.h
+++ b/ash/login/login_screen_controller.h
@@ -16,6 +16,7 @@
 #include "base/macros.h"
 #include "base/optional.h"
 #include "base/time/time.h"
+#include "ui/gfx/native_widget_types.h"
 
 class PrefRegistrySimple;
 
@@ -91,8 +92,8 @@
                                            const std::string& locale);
   void ShowFeedback();
   void ShowResetScreen();
-  void ShowAccountAccessHelpApp();
-  void ShowParentAccessHelpApp();
+  void ShowAccountAccessHelpApp(gfx::NativeWindow parent_window);
+  void ShowParentAccessHelpApp(gfx::NativeWindow parent_window);
   void ShowLockScreenNotificationSettings();
   void FocusOobeDialog();
   void NotifyUserActivity();
diff --git a/ash/login/mock_login_screen_client.h b/ash/login/mock_login_screen_client.h
index d9955f3..ebe2255 100644
--- a/ash/login/mock_login_screen_client.h
+++ b/ash/login/mock_login_screen_client.h
@@ -119,8 +119,8 @@
               (override));
   MOCK_METHOD(void, ShowFeedback, (), (override));
   MOCK_METHOD(void, ShowResetScreen, (), (override));
-  MOCK_METHOD(void, ShowAccountAccessHelpApp, (), (override));
-  MOCK_METHOD(void, ShowParentAccessHelpApp, (), (override));
+  MOCK_METHOD(void, ShowAccountAccessHelpApp, (gfx::NativeWindow), (override));
+  MOCK_METHOD(void, ShowParentAccessHelpApp, (gfx::NativeWindow), (override));
   MOCK_METHOD(void, ShowLockScreenNotificationSettings, (), (override));
   MOCK_METHOD(void, FocusOobeDialog, (), (override));
   MOCK_METHOD(void, OnFocusLeavingSystemTray, (bool reverse), (override));
diff --git a/ash/login/ui/lock_contents_view.cc b/ash/login/ui/lock_contents_view.cc
index c0fd830e7..8a435f3a 100644
--- a/ash/login/ui/lock_contents_view.cc
+++ b/ash/login/ui/lock_contents_view.cc
@@ -148,7 +148,8 @@
   }
 
   void ButtonPressed(Button* sender, const ui::Event& event) override {
-    Shell::Get()->login_screen_controller()->ShowAccountAccessHelpApp();
+    Shell::Get()->login_screen_controller()->ShowAccountAccessHelpApp(
+        GetWidget()->GetNativeWindow());
     parent_bubble_->Hide();
   }
 
diff --git a/ash/login/ui/lock_contents_view_unittest.cc b/ash/login/ui/lock_contents_view_unittest.cc
index 154a84b7..d5d7e598 100644
--- a/ash/login/ui/lock_contents_view_unittest.cc
+++ b/ash/login/ui/lock_contents_view_unittest.cc
@@ -991,6 +991,7 @@
       DataDispatcher(),
       std::make_unique<FakeLoginDetachableBaseModel>(DataDispatcher()));
   SetUserCount(1);
+
   SetWidget(CreateWidgetWithContent(contents));
 
   LockContentsView::TestApi test_api(contents);
@@ -1018,7 +1019,8 @@
   ASSERT_TRUE(button);
 
   // Expect ShowAccountAccessHelp() to be called due to button click.
-  EXPECT_CALL(*client, ShowAccountAccessHelpApp()).Times(1);
+  EXPECT_CALL(*client, ShowAccountAccessHelpApp(widget()->GetNativeWindow()))
+      .Times(1);
 
   // Move mouse to AuthError's ShowAccountAccessHelp button and click it.
   // Should result in ShowAccountAccessHelpApp().
diff --git a/ash/login/ui/parent_access_view.cc b/ash/login/ui/parent_access_view.cc
index c8cb2561..877e7f19f2 100644
--- a/ash/login/ui/parent_access_view.cc
+++ b/ash/login/ui/parent_access_view.cc
@@ -805,9 +805,13 @@
     // TODO(https://crbug.com/999387): Remove this when handling touch
     // cancellation is fixed for system modal windows.
     base::ThreadTaskRunnerHandle::Get()->PostTask(
-        FROM_HERE, base::BindOnce([]() {
-          Shell::Get()->login_screen_controller()->ShowParentAccessHelpApp();
-        }));
+        FROM_HERE,
+        base::BindOnce(
+            [](gfx::NativeWindow parent_window) {
+              Shell::Get()->login_screen_controller()->ShowParentAccessHelpApp(
+                  parent_window);
+            },
+            GetWidget()->GetNativeWindow()));
   } else if (sender == submit_button_) {
     SubmitCode();
   }
diff --git a/ash/login/ui/parent_access_view_unittest.cc b/ash/login/ui/parent_access_view_unittest.cc
index 744008ba..9750a8a 100644
--- a/ash/login/ui/parent_access_view_unittest.cc
+++ b/ash/login/ui/parent_access_view_unittest.cc
@@ -280,7 +280,8 @@
   ParentAccessView::TestApi test_api(view_);
   EXPECT_TRUE(test_api.help_button()->GetEnabled());
 
-  EXPECT_CALL(*client, ShowParentAccessHelpApp()).Times(1);
+  EXPECT_CALL(*client, ShowParentAccessHelpApp(widget()->GetNativeWindow()))
+      .Times(1);
   SimulateButtonPress(test_api.help_button());
   base::RunLoop().RunUntilIdle();
 
diff --git a/ash/public/cpp/BUILD.gn b/ash/public/cpp/BUILD.gn
index 4ede1178..cef9d11 100644
--- a/ash/public/cpp/BUILD.gn
+++ b/ash/public/cpp/BUILD.gn
@@ -223,8 +223,6 @@
     "wallpaper_info.h",
     "wallpaper_types.h",
     "window_animation_types.h",
-    "window_backdrop.cc",
-    "window_backdrop.h",
     "window_pin_type.cc",
     "window_pin_type.h",
     "window_properties.cc",
diff --git a/ash/public/cpp/login_screen_client.h b/ash/public/cpp/login_screen_client.h
index c3a000a..772562c 100644
--- a/ash/public/cpp/login_screen_client.h
+++ b/ash/public/cpp/login_screen_client.h
@@ -10,6 +10,7 @@
 #include "ash/public/cpp/ash_public_export.h"
 #include "base/callback_forward.h"
 #include "base/time/time.h"
+#include "ui/gfx/native_widget_types.h"
 
 class AccountId;
 
@@ -148,10 +149,10 @@
   virtual void ShowResetScreen() = 0;
 
   // Show the help app for when users have trouble signing in to their account.
-  virtual void ShowAccountAccessHelpApp() = 0;
+  virtual void ShowAccountAccessHelpApp(gfx::NativeWindow parent_window) = 0;
 
   // Shows help app for users that have trouble using parent access code.
-  virtual void ShowParentAccessHelpApp() = 0;
+  virtual void ShowParentAccessHelpApp(gfx::NativeWindow parent_window) = 0;
 
   // Show the lockscreen notification settings page.
   virtual void ShowLockScreenNotificationSettings() = 0;
diff --git a/ash/public/cpp/window_backdrop.cc b/ash/public/cpp/window_backdrop.cc
deleted file mode 100644
index d8ec3fa2..0000000
--- a/ash/public/cpp/window_backdrop.cc
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ash/public/cpp/window_backdrop.h"
-
-#include "ash/public/cpp/window_properties.h"
-#include "ui/aura/window.h"
-
-namespace ash {
-
-namespace {
-
-constexpr SkColor kSemiOpaqueBackdropColor =
-    SkColorSetARGB(0x99, 0x20, 0x21, 0x24);
-
-}  // namespace
-
-WindowBackdrop::WindowBackdrop(aura::Window* window) : window_(window) {}
-WindowBackdrop::~WindowBackdrop() = default;
-
-// static
-WindowBackdrop* WindowBackdrop::Get(aura::Window* window) {
-  DCHECK(window);
-
-  WindowBackdrop* window_backdrop = window->GetProperty(kWindowBackdropKey);
-  if (window_backdrop)
-    return window_backdrop;
-
-  window_backdrop = new WindowBackdrop(window);
-  window->SetProperty(kWindowBackdropKey, window_backdrop);
-  return window_backdrop;
-}
-
-void WindowBackdrop::SetBackdropMode(WindowBackdrop::BackdropMode mode) {
-  if (mode_ == mode)
-    return;
-
-  mode_ = mode;
-  NotifyWindowBackdropPropertyChanged();
-}
-
-void WindowBackdrop::SetBackdropType(WindowBackdrop::BackdropType type) {
-  if (type_ == type)
-    return;
-
-  type_ = type;
-  NotifyWindowBackdropPropertyChanged();
-}
-
-void WindowBackdrop::DisableBackdrop() {
-  if (temporarily_disabled_)
-    return;
-
-  temporarily_disabled_ = true;
-  NotifyWindowBackdropPropertyChanged();
-}
-
-void WindowBackdrop::RestoreBackdrop() {
-  if (!temporarily_disabled_)
-    return;
-
-  temporarily_disabled_ = false;
-  NotifyWindowBackdropPropertyChanged();
-}
-
-SkColor WindowBackdrop::GetBackdropColor() const {
-  if (type_ == BackdropType::kSemiOpaque)
-    return kSemiOpaqueBackdropColor;
-
-  DCHECK(type_ == BackdropType::kOpaque);
-  return SK_ColorBLACK;
-}
-
-void WindowBackdrop::AddObserver(WindowBackdrop::Observer* observer) {
-  observers_.AddObserver(observer);
-}
-
-void WindowBackdrop::RemoveObserver(WindowBackdrop::Observer* observer) {
-  observers_.RemoveObserver(observer);
-}
-
-void WindowBackdrop::NotifyWindowBackdropPropertyChanged() {
-  for (auto& observer : observers_)
-    observer.OnWindowBackdropPropertyChanged(window_);
-}
-
-}  // namespace ash
diff --git a/ash/public/cpp/window_backdrop.h b/ash/public/cpp/window_backdrop.h
deleted file mode 100644
index 1157f29..0000000
--- a/ash/public/cpp/window_backdrop.h
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef ASH_PUBLIC_CPP_WINDOW_BACKDROP_H_
-#define ASH_PUBLIC_CPP_WINDOW_BACKDROP_H_
-
-#include "ash/public/cpp/ash_constants.h"
-#include "ash/public/cpp/ash_public_export.h"
-#include "base/observer_list.h"
-
-namespace aura {
-class Window;
-}
-
-namespace ash {
-
-// The window backdrop property that associates with a window. It's owned by
-// a window through its kWindowBackdropKey property. It's not supposed to
-// manually clear the kWindowBackdropKey property, as WindowBackdrop::Get()
-// will create a new one as soon as it's called. If you want to modify the
-// window's backdrop, please do so by modifying its mode/type value to achieve
-// that.
-class ASH_PUBLIC_EXPORT WindowBackdrop {
- public:
-  enum class BackdropMode {
-    kAuto,  // The window manager decides if the window should have a backdrop.
-    kEnabled,   // The window should always have a backdrop.
-    kDisabled,  // The window should never have a backdrop.
-  };
-
-  enum class BackdropType {
-    kOpaque,      // The backdrop is fully-opaque black
-    kSemiOpaque,  // The backdrop is semi-opaque black
-  };
-
-  class Observer : public base::CheckedObserver {
-   public:
-    virtual void OnWindowBackdropPropertyChanged(aura::Window* window) {}
-  };
-
-  explicit WindowBackdrop(aura::Window* window);
-  ~WindowBackdrop();
-
-  // Returns the WindowBackdrop for |window|. The returned value is owned by
-  // |window|.
-  static WindowBackdrop* Get(aura::Window* window);
-
-  BackdropMode mode() const { return mode_; }
-  BackdropType type() const { return type_; }
-  bool temporarily_disabled() const { return temporarily_disabled_; }
-
-  void SetBackdropMode(BackdropMode mode);
-  void SetBackdropType(BackdropType type);
-
-  // Disable the backdrop on the window. However, the backdrop mode and type can
-  // still be modified even when backdrop is disabled but will have no effect on
-  // the backdrop. After backdrop is re-enabled, the mode and type will take
-  // effect again.
-  void DisableBackdrop();
-  void RestoreBackdrop();
-
-  // Returns the backdrop color according to its type.
-  SkColor GetBackdropColor() const;
-
-  void AddObserver(Observer* observer);
-  void RemoveObserver(Observer* observer);
-
- private:
-  WindowBackdrop(const WindowBackdrop&) = delete;
-  WindowBackdrop& operator=(const WindowBackdrop&) = delete;
-
-  void NotifyWindowBackdropPropertyChanged();
-
-  // The window that this WindowBackdrop associates with. Will be valid during
-  // this WindowBackdrop's lifetime.
-  aura::Window* window_;
-
-  BackdropMode mode_ = BackdropMode::kAuto;
-  BackdropType type_ = BackdropType::kOpaque;
-
-  // When this variable is true, the window backdrop is temporarily disabled
-  // and changing its backdrop setting above (mode/type) will not have any
-  // effect. Only when this variable is reset back to false, the window can have
-  // its customized backdrop setting.
-  // This can be useful when we need to disable window backdrop temporarily
-  // during e.g. window dragging or window animation.
-  bool temporarily_disabled_ = false;
-
-  base::ObserverList<Observer> observers_;
-};
-
-}  // namespace ash
-
-#endif  // ASH_PUBLIC_CPP_WINDOW_BACKDROP_H_
diff --git a/ash/public/cpp/window_properties.cc b/ash/public/cpp/window_properties.cc
index fb7959d..d4117a6 100644
--- a/ash/public/cpp/window_properties.cc
+++ b/ash/public/cpp/window_properties.cc
@@ -7,7 +7,6 @@
 #include "ash/public/cpp/ash_constants.h"
 #include "ash/public/cpp/immersive/immersive_fullscreen_controller.h"
 #include "ash/public/cpp/shelf_types.h"
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/public/cpp/window_pin_type.h"
 #include "ash/public/cpp/window_state_type.h"
 #include "ui/aura/window.h"
@@ -15,13 +14,16 @@
 
 DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(ASH_PUBLIC_EXPORT, ash::WindowPinType)
 DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(ASH_PUBLIC_EXPORT, ash::WindowStateType)
-DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(ASH_PUBLIC_EXPORT, ash::WindowBackdrop*)
+DEFINE_EXPORTED_UI_CLASS_PROPERTY_TYPE(ASH_PUBLIC_EXPORT,
+                                       ash::BackdropWindowMode)
 
 namespace ash {
 
 DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(std::string, kAppIDKey, nullptr)
 DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(std::string, kArcPackageNameKey, nullptr)
-DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(WindowBackdrop, kWindowBackdropKey, nullptr)
+DEFINE_UI_CLASS_PROPERTY_KEY(BackdropWindowMode,
+                             kBackdropWindowMode,
+                             BackdropWindowMode::kAutoOpaque)
 DEFINE_UI_CLASS_PROPERTY_KEY(bool, kBlockedForAssistantSnapshotKey, false)
 DEFINE_UI_CLASS_PROPERTY_KEY(bool, kCanAttachToAnotherWindowKey, true)
 DEFINE_UI_CLASS_PROPERTY_KEY(bool, kCanConsumeSystemKeysKey, false)
diff --git a/ash/public/cpp/window_properties.h b/ash/public/cpp/window_properties.h
index 7efb801..f038f21 100644
--- a/ash/public/cpp/window_properties.h
+++ b/ash/public/cpp/window_properties.h
@@ -16,7 +16,7 @@
 class Window;
 template <typename T>
 using WindowProperty = ui::ClassProperty<T>;
-}  // namespace aura
+}
 
 namespace gfx {
 class Rect;
@@ -27,7 +27,13 @@
 enum class WindowPinType;
 enum class WindowStateType;
 
-class WindowBackdrop;
+enum class BackdropWindowMode {
+  kEnabled,     // The window needs a backdrop shown behind it.
+  kDisabled,    // The window should never have a backdrop.
+  kAutoOpaque,  // The window manager decides if the window should have a fully
+                // opaque backdrop.
+  kAutoSemiOpaque,  // The window needs a semi-opaque backdrop shown behind it.
+};
 
 // Shell-specific window property keys for use by ash and its clients.
 
@@ -42,11 +48,10 @@
 ASH_PUBLIC_EXPORT extern const aura::WindowProperty<std::string*>* const
     kArcPackageNameKey;
 
-// A property key to specify whether the window should have backdrop and if
-// it has backdrop, the backdrop's mode and type. The backdrop is typically a
-// black window that covers the entire workspace placed behind the window.
-ASH_PUBLIC_EXPORT extern const aura::WindowProperty<WindowBackdrop*>* const
-    kWindowBackdropKey;
+// A property key to specify if the window should (or should not) have a
+// backdrop window (typically black) that covers the desktop behind the window.
+ASH_PUBLIC_EXPORT extern const aura::WindowProperty<BackdropWindowMode>* const
+    kBackdropWindowMode;
 
 // If set to true, the window will be replaced by a black rectangle when taking
 // screenshot for assistant. Used to preserve privacy for incognito windows.
diff --git a/ash/shelf/shelf_layout_manager.cc b/ash/shelf/shelf_layout_manager.cc
index 84551c0..6f87938 100644
--- a/ash/shelf/shelf_layout_manager.cc
+++ b/ash/shelf/shelf_layout_manager.cc
@@ -427,11 +427,6 @@
 }
 
 void ShelfLayoutManager::PrepareForShutdown() {
-  // This might get called twice during shell shutdown - once at the beginning,
-  // and once as part of root window controller shutdown.
-  if (in_shutdown_)
-    return;
-
   in_shutdown_ = true;
 
   // Stop observing changes to avoid updating a partially destructed shelf.
@@ -919,13 +914,6 @@
   UpdateVisibilityState();
 }
 
-void ShelfLayoutManager::OnShellDestroying() {
-  // Prepare for shutdown early, to prevent window stacking changes that may
-  // happen during shutdown (e.g. during overview controller, or tablet mode
-  // controller destruction) from causing visibility and state updates.
-  PrepareForShutdown();
-}
-
 void ShelfLayoutManager::OnSplitViewStateChanged(
     SplitViewController::State previous_state,
     SplitViewController::State state) {
diff --git a/ash/shelf/shelf_layout_manager.h b/ash/shelf/shelf_layout_manager.h
index c918ec5bb..b526e89 100644
--- a/ash/shelf/shelf_layout_manager.h
+++ b/ash/shelf/shelf_layout_manager.h
@@ -187,7 +187,6 @@
   void OnShelfAutoHideBehaviorChanged(aura::Window* root_window) override;
   void OnUserWorkAreaInsetsChanged(aura::Window* root_window) override;
   void OnPinnedStateChanged(aura::Window* pinned_window) override;
-  void OnShellDestroying() override;
 
   // SplitViewObserver:
   void OnSplitViewStateChanged(SplitViewController::State previous_state,
diff --git a/ash/style/ash_color_provider.cc b/ash/style/ash_color_provider.cc
index 1cd133c..a302e3c 100644
--- a/ash/style/ash_color_provider.cc
+++ b/ash/style/ash_color_provider.cc
@@ -253,6 +253,14 @@
       light_color = gfx::kGoogleBlue600;
       dark_color = gfx::kGoogleBlue300;
       break;
+    case ContentLayerType::kIconSystemMenu:
+      light_color = gfx::kGoogleGrey700;
+      dark_color = gfx::kGoogleGrey200;
+      break;
+    case ContentLayerType::kIconSystemMenuToggled:
+      light_color = gfx::kGoogleGrey200;
+      dark_color = gfx::kGoogleGrey900;
+      break;
   }
   return color_mode == AshColorMode::kLight ? light_color : dark_color;
 }
diff --git a/ash/style/ash_color_provider.h b/ash/style/ash_color_provider.h
index c404a70..1e379fe7 100644
--- a/ash/style/ash_color_provider.h
+++ b/ash/style/ash_color_provider.h
@@ -88,6 +88,11 @@
     // Color for prominent icon button, e.g, "Add connection" icon button inside
     // VPN detailed view.
     kProminentIconButton,
+
+    // Color for system menu icon buttons with inverted dark mode colors, e.g,
+    // FeaturePodIconButton
+    kIconSystemMenu,
+    kIconSystemMenuToggled,
   };
 
   // Attributes of ripple, includes the base color, opacity of inkdrop and
diff --git a/ash/system/network/network_feature_pod_button.cc b/ash/system/network/network_feature_pod_button.cc
index 1858027..5ef63c3 100644
--- a/ash/system/network/network_feature_pod_button.cc
+++ b/ash/system/network/network_feature_pod_button.cc
@@ -141,12 +141,20 @@
 }
 
 void NetworkFeaturePodButton::Update() {
-  bool animating = false;
+  bool image_animating = false;
+  bool toggled_image_animating = false;
+
   gfx::ImageSkia image =
       Shell::Get()->system_tray_model()->active_network_icon()->GetImage(
+          ActiveNetworkIcon::Type::kSingle, network_icon::ICON_TYPE_FEATURE_POD,
+          &image_animating);
+
+  gfx::ImageSkia image_toggled =
+      Shell::Get()->system_tray_model()->active_network_icon()->GetImage(
           ActiveNetworkIcon::Type::kSingle,
-          network_icon::ICON_TYPE_DEFAULT_VIEW, &animating);
-  if (animating)
+          network_icon::ICON_TYPE_FEATURE_POD_TOGGLED,
+          &toggled_image_animating);
+  if (image_animating || toggled_image_animating)
     network_icon::NetworkIconAnimation::GetInstance()->AddObserver(this);
   else
     network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
@@ -159,6 +167,7 @@
                                 DeviceStateType::kEnabled;
   SetToggled(toggled);
   icon_button()->SetImage(views::Button::STATE_NORMAL, image);
+  icon_button()->SetToggledImage(views::Button::STATE_NORMAL, &image_toggled);
 
   base::string16 network_name;
   if (network) {
diff --git a/ash/system/network/network_icon.cc b/ash/system/network/network_icon.cc
index ca72e270..908e4fd7 100644
--- a/ash/system/network/network_icon.cc
+++ b/ash/system/network/network_icon.cc
@@ -448,11 +448,24 @@
 // Public interface
 
 SkColor GetDefaultColorForIconType(IconType icon_type) {
-  const bool light_icon = icon_type == ICON_TYPE_TRAY_OOBE;
-  return AshColorProvider::Get()->GetContentLayerColor(
-      AshColorProvider::ContentLayerType::kIconPrimary,
-      light_icon ? AshColorProvider::AshColorMode::kLight
-                 : AshColorProvider::AshColorMode::kDark);
+  switch (icon_type) {
+    case ICON_TYPE_TRAY_OOBE:
+      return AshColorProvider::Get()->GetContentLayerColor(
+          AshColorProvider::ContentLayerType::kIconPrimary,
+          AshColorProvider::AshColorMode::kLight);
+    case ICON_TYPE_FEATURE_POD:
+      return AshColorProvider::Get()->GetContentLayerColor(
+          AshColorProvider::ContentLayerType::kIconSystemMenu,
+          AshColorProvider::AshColorMode::kDark);
+    case ICON_TYPE_FEATURE_POD_TOGGLED:
+      return AshColorProvider::Get()->GetContentLayerColor(
+          AshColorProvider::ContentLayerType::kIconSystemMenuToggled,
+          AshColorProvider::AshColorMode::kDark);
+    default:
+      return AshColorProvider::Get()->GetContentLayerColor(
+          AshColorProvider::ContentLayerType::kIconPrimary,
+          AshColorProvider::AshColorMode::kDark);
+  }
 }
 
 const gfx::ImageSkia GetBasicImage(IconType icon_type,
diff --git a/ash/system/network/network_icon.h b/ash/system/network/network_icon.h
index bf42dc3..79ad1cc04 100644
--- a/ash/system/network/network_icon.h
+++ b/ash/system/network/network_icon.h
@@ -24,7 +24,11 @@
   ICON_TYPE_TRAY_REGULAR,  // light icons with VPN badges, used outside of OOBE
   ICON_TYPE_DEFAULT_VIEW,  // dark icons with VPN badges
   ICON_TYPE_LIST,          // dark icons without VPN badges; in-line status
-  ICON_TYPE_MENU_LIST,     // dark icons without VPN badges; separate status
+  ICON_TYPE_FEATURE_POD,   // icons in the network feature pod button in system
+                           // menu
+  ICON_TYPE_FEATURE_POD_TOGGLED,  // toggled icons in the network feature pod
+                                  // button in system menu
+  ICON_TYPE_MENU_LIST,  // dark icons without VPN badges; separate status
 };
 
 // Strength of a wireless signal.
diff --git a/ash/system/unified/feature_pod_button.cc b/ash/system/unified/feature_pod_button.cc
index 1e4d63cf..d110122 100644
--- a/ash/system/unified/feature_pod_button.cc
+++ b/ash/system/unified/feature_pod_button.cc
@@ -55,7 +55,7 @@
 
 FeaturePodIconButton::FeaturePodIconButton(views::ButtonListener* listener,
                                            bool is_togglable)
-    : views::ImageButton(listener), is_togglable_(is_togglable) {
+    : views::ToggleImageButton(listener), is_togglable_(is_togglable) {
   SetPreferredSize(kUnifiedFeaturePodIconSize);
   SetBorder(views::CreateEmptyBorder(kUnifiedFeaturePodIconPadding));
   SetImageHorizontalAlignment(ALIGN_CENTER);
@@ -73,7 +73,7 @@
     return;
 
   toggled_ = toggled;
-  SchedulePaint();
+  views::ToggleImageButton::SetToggled(toggled);
 }
 
 void FeaturePodIconButton::PaintButtonContents(gfx::Canvas* canvas) {
@@ -82,14 +82,14 @@
   flags.setAntiAlias(true);
 
   const AshColorProvider* color_provider = AshColorProvider::Get();
-  SkColor color = color_provider->DeprecatedGetControlsLayerColor(
+  SkColor color = color_provider->GetControlsLayerColor(
       AshColorProvider::ControlsLayerType::kInactiveControlBackground,
-      kUnifiedMenuButtonColor);
+      AshColorMode::kDark);
   if (GetEnabled()) {
     if (toggled_) {
-      color = color_provider->DeprecatedGetControlsLayerColor(
+      color = color_provider->GetControlsLayerColor(
           AshColorProvider::ControlsLayerType::kActiveControlBackground,
-          kUnifiedMenuButtonColorActive);
+          AshColorMode::kDark);
     }
   } else {
     color = AshColorProvider::GetDisabledColor(color);
@@ -326,11 +326,19 @@
 
 void FeaturePodButton::SetVectorIcon(const gfx::VectorIcon& icon) {
   const SkColor icon_color = AshColorProvider::Get()->GetContentLayerColor(
-      ContentLayerType::kIconPrimary, AshColorMode::kDark);
+      ContentLayerType::kIconSystemMenu, AshColorMode::kDark);
+  const SkColor toggled_color = AshColorProvider::Get()->GetContentLayerColor(
+      ContentLayerType::kIconSystemMenuToggled, AshColorMode::kDark);
+
   icon_button_->SetImage(
       views::Button::STATE_NORMAL,
       gfx::CreateVectorIcon(icon, kUnifiedFeaturePodVectorIconSize,
                             icon_color));
+  icon_button_->SetToggledImage(
+      views::Button::STATE_NORMAL,
+      new gfx::ImageSkia(gfx::CreateVectorIcon(
+          icon, kUnifiedFeaturePodVectorIconSize, toggled_color)));
+
   icon_button_->SetImage(
       views::Button::STATE_DISABLED,
       gfx::CreateVectorIcon(icon, kUnifiedFeaturePodVectorIconSize,
diff --git a/ash/system/unified/feature_pod_button.h b/ash/system/unified/feature_pod_button.h
index 7ade643..2bd6ec85 100644
--- a/ash/system/unified/feature_pod_button.h
+++ b/ash/system/unified/feature_pod_button.h
@@ -20,8 +20,8 @@
 
 class FeaturePodControllerBase;
 
-// ImageButon internally used in FeaturePodButton. Should not be used directly.
-class FeaturePodIconButton : public views::ImageButton {
+// ImageButton internally used in FeaturePodButton. Should not be used directly.
+class FeaturePodIconButton : public views::ToggleImageButton {
  public:
   FeaturePodIconButton(views::ButtonListener* listener, bool is_togglable);
   ~FeaturePodIconButton() override;
diff --git a/ash/system/unified/unified_slider_view.cc b/ash/system/unified/unified_slider_view.cc
index 1466b1ef..4538e1a 100644
--- a/ash/system/unified/unified_slider_view.cc
+++ b/ash/system/unified/unified_slider_view.cc
@@ -7,11 +7,14 @@
 #include "ash/style/ash_color_provider.h"
 #include "ash/style/default_color_constants.h"
 #include "ash/system/tray/tray_popup_utils.h"
-#include "ash/system/unified/top_shortcut_button.h"
+#include "ash/system/unified/unified_system_tray_view.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/gfx/canvas.h"
 #include "ui/gfx/paint_vector_icon.h"
 #include "ui/views/accessibility/view_accessibility.h"
+#include "ui/views/animation/flood_fill_ink_drop_ripple.h"
+#include "ui/views/animation/ink_drop_highlight.h"
+#include "ui/views/animation/ink_drop_impl.h"
 #include "ui/views/animation/ink_drop_mask.h"
 #include "ui/views/border.h"
 #include "ui/views/controls/highlight_path_generator.h"
@@ -21,18 +24,36 @@
 
 namespace ash {
 
+using ContentLayerType = AshColorProvider::ContentLayerType;
+using AshColorMode = AshColorProvider::AshColorMode;
+
 namespace {
 
 views::Slider* CreateSlider(UnifiedSliderListener* listener, bool readonly) {
   if (readonly)
     return new ReadOnlySlider();
 
-  return new views::Slider(listener);
+  return new SystemSlider(listener);
 }
 
 }  // namespace
 
-ReadOnlySlider::ReadOnlySlider() : Slider(nullptr) {}
+SystemSlider::SystemSlider(views::SliderListener* listener)
+    : views::Slider(listener) {}
+
+SkColor SystemSlider::GetThumbColor() const {
+  return AshColorProvider::Get()->GetControlsLayerColor(
+      AshColorProvider::ControlsLayerType::kActiveControlBackground,
+      AshColorProvider::AshColorMode::kDark);
+}
+
+SkColor SystemSlider::GetTroughColor() const {
+  return AshColorProvider::Get()->GetControlsLayerColor(
+      AshColorProvider::ControlsLayerType::kInactiveControlBackground,
+      AshColorProvider::AshColorMode::kDark);
+}
+
+ReadOnlySlider::ReadOnlySlider() : SystemSlider(nullptr) {}
 
 bool ReadOnlySlider::OnMousePressed(const ui::MouseEvent& event) {
   return false;
@@ -57,7 +78,14 @@
 UnifiedSliderButton::UnifiedSliderButton(views::ButtonListener* listener,
                                          const gfx::VectorIcon& icon,
                                          int accessible_name_id)
-    : TopShortcutButton(listener, accessible_name_id) {
+    : views::ToggleImageButton(listener) {
+  SetImageHorizontalAlignment(ALIGN_CENTER);
+  SetImageVerticalAlignment(ALIGN_MIDDLE);
+  if (accessible_name_id)
+    SetTooltipText(l10n_util::GetStringUTF16(accessible_name_id));
+
+  TrayPopupUtils::ConfigureTrayPopupButton(this);
+
   SetVectorIcon(icon);
   SetBorder(views::CreateEmptyBorder(kUnifiedCircularButtonFocusPadding));
   views::InstallCircleHighlightPathGenerator(this);
@@ -75,18 +103,24 @@
 }
 
 void UnifiedSliderButton::SetVectorIcon(const gfx::VectorIcon& icon) {
+  const SkColor toggled_color = AshColorProvider::Get()->GetContentLayerColor(
+      ContentLayerType::kIconSystemMenuToggled, AshColorMode::kDark);
   const SkColor icon_color = AshColorProvider::Get()->GetContentLayerColor(
-      AshColorProvider::ContentLayerType::kIconPrimary,
-      AshColorProvider::AshColorMode::kDark);
+      ContentLayerType::kIconSystemMenu, AshColorMode::kDark);
+
   SetImage(views::Button::STATE_NORMAL,
            gfx::CreateVectorIcon(icon, icon_color));
+
+  toggled_icon_ = gfx::CreateVectorIcon(icon, toggled_color);
+  SetToggledImage(views::Button::STATE_NORMAL, &toggled_icon_);
+
   SetImage(views::Button::STATE_DISABLED,
            gfx::CreateVectorIcon(icon, icon_color));
 }
 
 void UnifiedSliderButton::SetToggled(bool toggled) {
   toggled_ = toggled;
-  SchedulePaint();
+  views::ToggleImageButton::SetToggled(toggled);
 }
 
 void UnifiedSliderButton::PaintButtonContents(gfx::Canvas* canvas) {
@@ -95,12 +129,12 @@
   flags.setAntiAlias(true);
   flags.setColor(
       toggled_
-          ? AshColorProvider::Get()->DeprecatedGetControlsLayerColor(
+          ? AshColorProvider::Get()->GetControlsLayerColor(
                 AshColorProvider::ControlsLayerType::kActiveControlBackground,
-                kUnifiedMenuButtonColorActive)
-          : AshColorProvider::Get()->DeprecatedGetControlsLayerColor(
+                AshColorProvider::AshColorMode::kDark)
+          : AshColorProvider::Get()->GetControlsLayerColor(
                 AshColorProvider::ControlsLayerType::kInactiveControlBackground,
-                kUnifiedMenuButtonColor));
+                AshColorProvider::AshColorMode::kDark));
   flags.setStyle(cc::PaintFlags::kFill_Style);
   canvas->DrawCircle(gfx::PointF(rect.CenterPoint()), kTrayItemSize / 2, flags);
 
@@ -114,10 +148,29 @@
       size(), bounds.CenterPoint(), bounds.width() / 2);
 }
 
+std::unique_ptr<views::InkDrop> UnifiedSliderButton::CreateInkDrop() {
+  return TrayPopupUtils::CreateInkDrop(this);
+}
+
+std::unique_ptr<views::InkDropRipple> UnifiedSliderButton::CreateInkDropRipple()
+    const {
+  return TrayPopupUtils::CreateInkDropRipple(
+      TrayPopupInkDropStyle::FILL_BOUNDS, this,
+      GetInkDropCenterBasedOnLastEvent(),
+      UnifiedSystemTrayView::GetBackgroundColor());
+}
+
+std::unique_ptr<views::InkDropHighlight>
+UnifiedSliderButton::CreateInkDropHighlight() const {
+  return TrayPopupUtils::CreateInkDropHighlight(
+      TrayPopupInkDropStyle::FILL_BOUNDS, this,
+      UnifiedSystemTrayView::GetBackgroundColor());
+}
+
 void UnifiedSliderButton::GetAccessibleNodeData(ui::AXNodeData* node_data) {
   if (!GetEnabled())
     return;
-  TopShortcutButton::GetAccessibleNodeData(node_data);
+  views::ToggleImageButton::GetAccessibleNodeData(node_data);
   node_data->role = ax::mojom::Role::kToggleButton;
   node_data->SetCheckedState(toggled_ ? ax::mojom::CheckedState::kTrue
                                       : ax::mojom::CheckedState::kFalse);
diff --git a/ash/system/unified/unified_slider_view.h b/ash/system/unified/unified_slider_view.h
index 1173269..54c1a344 100644
--- a/ash/system/unified/unified_slider_view.h
+++ b/ash/system/unified/unified_slider_view.h
@@ -23,9 +23,19 @@
   ~UnifiedSliderListener() override = default;
 };
 
+// Custom slider for the system menu to use different color scheme.
+class SystemSlider : public views::Slider {
+ public:
+  explicit SystemSlider(views::SliderListener* listener);
+
+ private:
+  SkColor GetThumbColor() const override;
+  SkColor GetTroughColor() const override;
+};
+
 // A slider that ignores inputs.
 // TODO(tetsui): Move to anonymous namespace.
-class ReadOnlySlider : public views::Slider {
+class ReadOnlySlider : public SystemSlider {
  public:
   ReadOnlySlider();
 
@@ -44,7 +54,7 @@
 };
 
 // A button used in a slider row of UnifiedSystemTray. The button is togglable.
-class UnifiedSliderButton : public TopShortcutButton {
+class UnifiedSliderButton : public views::ToggleImageButton {
  public:
   UnifiedSliderButton(views::ButtonListener* listener,
                       const gfx::VectorIcon& icon,
@@ -63,17 +73,23 @@
   // views::Button:
   const char* GetClassName() const override;
 
-  // views::ImageButton:
+  // views::ToggleImageButton:
   std::unique_ptr<views::InkDropMask> CreateInkDropMask() const override;
+  std::unique_ptr<views::InkDrop> CreateInkDrop() override;
+  std::unique_ptr<views::InkDropRipple> CreateInkDropRipple() const override;
+  std::unique_ptr<views::InkDropHighlight> CreateInkDropHighlight()
+      const override;
 
-  // TopShortcutButton:
   void PaintButtonContents(gfx::Canvas* canvas) override;
   void GetAccessibleNodeData(ui::AXNodeData* node_data) override;
 
  private:
-  // Ture if the button is currently toggled.
+  // True if the button is currently toggled.
   bool toggled_ = false;
 
+  // Icon used when the button is toggled.
+  gfx::ImageSkia toggled_icon_;
+
   DISALLOW_COPY_AND_ASSIGN(UnifiedSliderButton);
 };
 
diff --git a/ash/wm/splitview/split_view_controller_unittest.cc b/ash/wm/splitview/split_view_controller_unittest.cc
index 261c102..516d85ca 100644
--- a/ash/wm/splitview/split_view_controller_unittest.cc
+++ b/ash/wm/splitview/split_view_controller_unittest.cc
@@ -19,7 +19,6 @@
 #include "ash/public/cpp/fps_counter.h"
 #include "ash/public/cpp/presentation_time_recorder.h"
 #include "ash/public/cpp/shelf_config.h"
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
 #include "ash/screen_util.h"
@@ -2897,26 +2896,22 @@
   const gfx::Rect bounds(0, 0, 400, 400);
   std::unique_ptr<aura::Window> window(
       CreateWindowWithType(bounds, AppType::BROWSER));
-  WindowBackdrop* window_backdrop = WindowBackdrop::Get(window.get());
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
-  EXPECT_EQ(window_backdrop->type(), WindowBackdrop::BackdropType::kOpaque);
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
+            BackdropWindowMode::kAutoOpaque);
 
   std::unique_ptr<WindowResizer> resizer =
       StartDrag(window.get(), window.get());
   ASSERT_TRUE(resizer.get());
-  EXPECT_TRUE(window_backdrop->temporarily_disabled());
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
-  EXPECT_EQ(window_backdrop->type(), WindowBackdrop::BackdropType::kOpaque);
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
+            BackdropWindowMode::kDisabled);
 
   resizer->Drag(gfx::PointF(), 0);
-  EXPECT_TRUE(window_backdrop->temporarily_disabled());
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
-  EXPECT_EQ(window_backdrop->type(), WindowBackdrop::BackdropType::kOpaque);
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
+            BackdropWindowMode::kDisabled);
 
   resizer->CompleteDrag();
-  EXPECT_FALSE(window_backdrop->temporarily_disabled());
-  EXPECT_EQ(window_backdrop->mode(), WindowBackdrop::BackdropMode::kAuto);
-  EXPECT_EQ(window_backdrop->type(), WindowBackdrop::BackdropType::kOpaque);
+  EXPECT_EQ(window->GetProperty(kBackdropWindowMode),
+            BackdropWindowMode::kAutoOpaque);
 }
 
 // Test that in tablet mode, the window that is in tab-dragging process should
diff --git a/ash/wm/tablet_mode/tablet_mode_browser_window_drag_delegate.cc b/ash/wm/tablet_mode/tablet_mode_browser_window_drag_delegate.cc
index c0e0b5f..27c131f2 100644
--- a/ash/wm/tablet_mode/tablet_mode_browser_window_drag_delegate.cc
+++ b/ash/wm/tablet_mode/tablet_mode_browser_window_drag_delegate.cc
@@ -9,7 +9,6 @@
 #include "ash/display/screen_orientation_controller.h"
 #include "ash/home_screen/home_screen_controller.h"
 #include "ash/public/cpp/wallpaper_types.h"
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/root_window_controller.h"
 #include "ash/scoped_animation_disabler.h"
 #include "ash/shell.h"
@@ -126,7 +125,9 @@
     DCHECK(source_window);
 
     // Disable the backdrop for |source_window| during dragging.
-    WindowBackdrop::Get(source_window)->DisableBackdrop();
+    source_window_backdrop_ = source_window->GetProperty(kBackdropWindowMode);
+    source_window->SetProperty(kBackdropWindowMode,
+                               BackdropWindowMode::kDisabled);
 
     DCHECK(!Shell::Get()->overview_controller()->InOverviewSession());
 
@@ -161,7 +162,7 @@
     aura::Window* source_window =
         dragged_window_->GetProperty(kTabDraggingSourceWindowKey);
     if (source_window)
-      WindowBackdrop::Get(source_window)->RestoreBackdrop();
+      source_window->SetProperty(kBackdropWindowMode, source_window_backdrop_);
 
     for (auto iter = window_visibility_map_.begin();
          iter != window_visibility_map_.end(); ++iter) {
@@ -212,6 +213,10 @@
   // dragging.
   std::map<aura::Window*, bool> window_visibility_map_;
 
+  // The original backdrop mode of the source window. Should be disabled during
+  // dragging.
+  BackdropWindowMode source_window_backdrop_ = BackdropWindowMode::kAutoOpaque;
+
   DISALLOW_COPY_AND_ASSIGN(WindowsHider);
 };
 
diff --git a/ash/wm/tablet_mode/tablet_mode_window_drag_delegate.cc b/ash/wm/tablet_mode/tablet_mode_window_drag_delegate.cc
index 0a959d2..c998a35 100644
--- a/ash/wm/tablet_mode/tablet_mode_window_drag_delegate.cc
+++ b/ash/wm/tablet_mode/tablet_mode_window_drag_delegate.cc
@@ -5,7 +5,6 @@
 #include "ash/wm/tablet_mode/tablet_mode_window_drag_delegate.h"
 
 #include "ash/display/screen_orientation_controller.h"
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/root_window_controller.h"
 #include "ash/shelf/shelf_layout_manager.h"
 #include "ash/shell.h"
@@ -150,7 +149,9 @@
       ->UpdateVisibilityState();
 
   // Disable the backdrop on the dragged window.
-  WindowBackdrop::Get(dragged_window_)->DisableBackdrop();
+  original_backdrop_mode_ = dragged_window_->GetProperty(kBackdropWindowMode);
+  dragged_window_->SetProperty(kBackdropWindowMode,
+                               BackdropWindowMode::kDisabled);
 
   OverviewController* controller = Shell::Get()->overview_controller();
   bool was_overview_open = controller->InOverviewSession();
@@ -263,7 +264,7 @@
     const gfx::PointF& location_in_screen) {
   EndingWindowDrag(result, location_in_screen);
 
-  WindowBackdrop::Get(dragged_window_)->RestoreBackdrop();
+  dragged_window_->SetProperty(kBackdropWindowMode, original_backdrop_mode_);
   SplitViewController::SnapPosition snap_position = SplitViewController::NONE;
   if (result == ToplevelWindowEventHandler::DragResult::SUCCESS &&
       split_view_controller_->CanSnapWindow(dragged_window_)) {
diff --git a/ash/wm/tablet_mode/tablet_mode_window_drag_delegate.h b/ash/wm/tablet_mode/tablet_mode_window_drag_delegate.h
index 8a99d09..f22b664 100644
--- a/ash/wm/tablet_mode/tablet_mode_window_drag_delegate.h
+++ b/ash/wm/tablet_mode/tablet_mode_window_drag_delegate.h
@@ -127,6 +127,9 @@
 
   aura::Window* dragged_window_ = nullptr;  // not owned.
 
+  // The backdrop should be disabled during dragging and resumed after dragging.
+  BackdropWindowMode original_backdrop_mode_ = BackdropWindowMode::kAutoOpaque;
+
   // The dragged window should have the active window shadow elevation during
   // dragging.
   int original_shadow_elevation_ = ::wm::kShadowElevationDefault;
diff --git a/ash/wm/workspace/backdrop_controller.cc b/ash/wm/workspace/backdrop_controller.cc
index 9f9928e..2f9d3327e 100644
--- a/ash/wm/workspace/backdrop_controller.cc
+++ b/ash/wm/workspace/backdrop_controller.cc
@@ -13,7 +13,6 @@
 #include "ash/public/cpp/app_types.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/cpp/window_animation_types.h"
-#include "ash/public/cpp/window_properties.h"
 #include "ash/screen_util.h"
 #include "ash/shell.h"
 #include "ash/wallpaper/wallpaper_controller_impl.h"
@@ -39,6 +38,18 @@
 
 namespace {
 
+constexpr SkColor kSemiOpaqueBackdropColor =
+    SkColorSetARGB(0x99, 0x20, 0x21, 0x24);
+
+SkColor GetBackdropColorByMode(BackdropWindowMode mode) {
+  if (mode == BackdropWindowMode::kAutoSemiOpaque)
+    return kSemiOpaqueBackdropColor;
+
+  DCHECK(mode == BackdropWindowMode::kAutoOpaque ||
+         mode == BackdropWindowMode::kEnabled);
+  return SK_ColorBLACK;
+}
+
 // -----------------------------------------------------------------------------
 // BackdropEventHandler:
 
@@ -228,15 +239,11 @@
 }
 
 void BackdropController::OnWindowAddedToLayout(aura::Window* window) {
-  window_backdrop_observer_.Add(WindowBackdrop::Get(window));
-
   if (DoesWindowCauseBackdropUpdates(window))
     UpdateBackdrop();
 }
 
 void BackdropController::OnWindowRemovedFromLayout(aura::Window* window) {
-  window_backdrop_observer_.Remove(WindowBackdrop::Get(window));
-
   if (DoesWindowCauseBackdropUpdates(window))
     UpdateBackdrop();
 }
@@ -246,6 +253,12 @@
     UpdateBackdrop();
 }
 
+void BackdropController::OnBackdropWindowModePropertyChanged(
+    aura::Window* window) {
+  if (DoesWindowCauseBackdropUpdates(window))
+    UpdateBackdrop();
+}
+
 void BackdropController::OnWindowStackingChanged(aura::Window* window) {
   if (DoesWindowCauseBackdropUpdates(window))
     UpdateBackdrop();
@@ -358,9 +371,10 @@
 void BackdropController::OnWallpaperPreviewStarted() {
   aura::Window* active_window = window_util::GetActiveWindow();
   if (active_window) {
-    WindowBackdrop::Get(active_window)
-        ->SetBackdropMode(WindowBackdrop::BackdropMode::kDisabled);
+    active_window->SetProperty(kBackdropWindowMode,
+                               BackdropWindowMode::kDisabled);
   }
+  UpdateBackdrop();
 }
 
 void BackdropController::OnTabletModeStarted() {
@@ -371,11 +385,6 @@
   UpdateBackdrop();
 }
 
-void BackdropController::OnWindowBackdropPropertyChanged(aura::Window* window) {
-  if (DoesWindowCauseBackdropUpdates(window))
-    UpdateBackdrop();
-}
-
 void BackdropController::RestoreUpdates() {
   pause_update_ = false;
   UpdateBackdrop();
@@ -415,8 +424,9 @@
 void BackdropController::EnsureBackdropWidget() {
   DCHECK(window_having_backdrop_);
 
-  const SkColor backdrop_color =
-      WindowBackdrop::Get(window_having_backdrop_)->GetBackdropColor();
+  const BackdropWindowMode mode =
+      window_having_backdrop_->GetProperty(kBackdropWindowMode);
+  const SkColor backdrop_color = GetBackdropColorByMode(mode);
 
   if (backdrop_) {
     if (backdrop_window_->layer()->GetTargetColor() != backdrop_color)
@@ -469,15 +479,13 @@
 }
 
 bool BackdropController::WindowShouldHaveBackdrop(aura::Window* window) {
-  WindowBackdrop* window_backdrop = WindowBackdrop::Get(window);
-  if (window_backdrop->temporarily_disabled())
-    return false;
-
-  WindowBackdrop::BackdropMode backdrop_mode = window_backdrop->mode();
-  if (backdrop_mode == WindowBackdrop::BackdropMode::kEnabled)
-    return true;
-  if (backdrop_mode == WindowBackdrop::BackdropMode::kDisabled)
-    return false;
+  if (window->GetAllPropertyKeys().count(kBackdropWindowMode)) {
+    BackdropWindowMode backdrop_mode = window->GetProperty(kBackdropWindowMode);
+    if (backdrop_mode == BackdropWindowMode::kEnabled)
+      return true;
+    if (backdrop_mode == BackdropWindowMode::kDisabled)
+      return false;
+  }
 
   // If |window| is the current active window and is an ARC app window, |window|
   // should have a backdrop when spoken feedback is enabled.
diff --git a/ash/wm/workspace/backdrop_controller.h b/ash/wm/workspace/backdrop_controller.h
index 10a466a..8f31cd84 100644
--- a/ash/wm/workspace/backdrop_controller.h
+++ b/ash/wm/workspace/backdrop_controller.h
@@ -11,7 +11,6 @@
 #include "ash/ash_export.h"
 #include "ash/public/cpp/tablet_mode_observer.h"
 #include "ash/public/cpp/wallpaper_controller_observer.h"
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/wm/overview/overview_observer.h"
 #include "ash/wm/splitview/split_view_controller.h"
@@ -19,7 +18,6 @@
 #include "base/callback_helpers.h"
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
-#include "base/scoped_observer.h"
 #include "ui/gfx/geometry/rect.h"
 
 namespace aura {
@@ -49,8 +47,7 @@
                                       public OverviewObserver,
                                       public SplitViewObserver,
                                       public WallpaperControllerObserver,
-                                      public TabletModeObserver,
-                                      public WindowBackdrop::Observer {
+                                      public TabletModeObserver {
  public:
   explicit BackdropController(aura::Window* container);
   ~BackdropController() override;
@@ -58,6 +55,7 @@
   void OnWindowAddedToLayout(aura::Window* window);
   void OnWindowRemovedFromLayout(aura::Window* window);
   void OnChildWindowVisibilityChanged(aura::Window* window);
+  void OnBackdropWindowModePropertyChanged(aura::Window* window);
   void OnWindowStackingChanged(aura::Window* window);
   void OnPostWindowStateTypeChange(aura::Window* window);
   void OnDisplayMetricsChanged();
@@ -98,9 +96,6 @@
   void OnTabletModeStarted() override;
   void OnTabletModeEnded() override;
 
-  // WindowBackdrop::Observer:
-  void OnWindowBackdropPropertyChanged(aura::Window* window) override;
-
  private:
   class WindowAnimationWaiter;
   friend class WorkspaceControllerTestApi;
@@ -178,9 +173,6 @@
   // in overview mode.
   bool pause_update_ = false;
 
-  ScopedObserver<WindowBackdrop, WindowBackdrop::Observer>
-      window_backdrop_observer_{this};
-
   base::WeakPtrFactory<BackdropController> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(BackdropController);
diff --git a/ash/wm/workspace/workspace_layout_manager.cc b/ash/wm/workspace/workspace_layout_manager.cc
index 61185be..756677e 100644
--- a/ash/wm/workspace/workspace_layout_manager.cc
+++ b/ash/wm/workspace/workspace_layout_manager.cc
@@ -310,9 +310,8 @@
       if (window->parent() != container)
         container->AddChild(window);
     }
-  } else if (key == kWindowBackdropKey) {
-    // kWindowBackdropKey is not supposed to be cleared.
-    DCHECK(window->GetProperty(kWindowBackdropKey));
+  } else if (key == kBackdropWindowMode) {
+    backdrop_controller_->OnBackdropWindowModePropertyChanged(window);
   }
 }
 
@@ -337,7 +336,8 @@
     aura::Window* window,
     const gfx::Rect& old_bounds,
     const gfx::Rect& new_bounds,
-    ui::PropertyChangeReason reason) {}
+    ui::PropertyChangeReason reason) {
+}
 
 //////////////////////////////////////////////////////////////////////////////
 // WorkspaceLayoutManager, wm::ActivationChangeObserver implementation:
diff --git a/ash/wm/workspace/workspace_layout_manager_unittest.cc b/ash/wm/workspace/workspace_layout_manager_unittest.cc
index db27ff9..c62402ac 100644
--- a/ash/wm/workspace/workspace_layout_manager_unittest.cc
+++ b/ash/wm/workspace/workspace_layout_manager_unittest.cc
@@ -21,7 +21,6 @@
 #include "ash/public/cpp/shelf_config.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/cpp/test/shell_test_api.h"
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/root_window_controller.h"
 #include "ash/screen_util.h"
@@ -1313,8 +1312,7 @@
   window3->Show();
   EXPECT_FALSE(test_helper.GetBackdropWindow());
 
-  WindowBackdrop::Get(window2.get())
-      ->SetBackdropMode(WindowBackdrop::BackdropMode::kEnabled);
+  window2->SetProperty(kBackdropWindowMode, BackdropWindowMode::kEnabled);
   aura::Window* backdrop = test_helper.GetBackdropWindow();
   EXPECT_TRUE(backdrop);
   {
@@ -1328,8 +1326,7 @@
 
   // Setting the property to the one below the backdrop window shouldn't change
   // the state.
-  WindowBackdrop::Get(window1.get())
-      ->SetBackdropMode(WindowBackdrop::BackdropMode::kEnabled);
+  window1->SetProperty(kBackdropWindowMode, BackdropWindowMode::kEnabled);
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
@@ -1340,8 +1337,7 @@
   }
 
   // Setting the property to the top will move the backdrop up.
-  WindowBackdrop::Get(window3.get())
-      ->SetBackdropMode(WindowBackdrop::BackdropMode::kEnabled);
+  window3->SetProperty(kBackdropWindowMode, BackdropWindowMode::kEnabled);
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
@@ -1351,8 +1347,8 @@
     EXPECT_EQ(window3.get(), children[3]);
   }
 
-  // Disabling the backdrop in the middle will not change the backdrop position.
-  WindowBackdrop::Get(window2.get())->DisableBackdrop();
+  // Clearing the property in the middle will not change the backdrop position.
+  window2->ClearProperty(kBackdropWindowMode);
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
@@ -1362,8 +1358,8 @@
     EXPECT_EQ(window3.get(), children[3]);
   }
 
-  // Disabling the backdrop on top will move the backdrop to bottom.
-  WindowBackdrop::Get(window3.get())->DisableBackdrop();
+  // Clearing the property on top will move the backdrop to bottom.
+  window3->ClearProperty(kBackdropWindowMode);
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
@@ -1394,23 +1390,11 @@
     EXPECT_EQ(window3.get(), children[3]);
   }
 
-  // Enabling tablet mode will put the backdrop on the top most window that can
-  // have backdrop.
+  // Enabling tablet mode will put the backdrop on the top most window.
   SetTabletModeEnabled(true);
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
-    EXPECT_EQ(backdrop, children[0]);
-    EXPECT_EQ(window1.get(), children[1]);
-    EXPECT_EQ(window2.get(), children[2]);
-    EXPECT_EQ(window3.get(), children[3]);
-  }
-  // Restore the backdrop on |window2| and |window3| will update the backdrop.
-  WindowBackdrop::Get(window2.get())->RestoreBackdrop();
-  WindowBackdrop::Get(window3.get())->RestoreBackdrop();
-  {
-    aura::Window::Windows children = window1->parent()->children();
-    EXPECT_EQ(4U, children.size());
     EXPECT_EQ(window1.get(), children[0]);
     EXPECT_EQ(window2.get(), children[1]);
     EXPECT_EQ(backdrop, children[2]);
@@ -1437,20 +1421,20 @@
     EXPECT_EQ(window3.get(), children[3]);
   }
 
-  // Exiting tablet mode will move the backdrop back to window3 as window3 is
-  // the top most window with kEnabled backdrop mode.
+  // Exiting tablet mode will move the backdrop back to window1.
   SetTabletModeEnabled(false);
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
-    EXPECT_EQ(window1.get(), children[0]);
-    EXPECT_EQ(window2.get(), children[1]);
-    EXPECT_EQ(backdrop, children[2]);
+    EXPECT_EQ(backdrop, children[0]);
+    EXPECT_EQ(window1.get(), children[1]);
+    EXPECT_EQ(window2.get(), children[2]);
     EXPECT_EQ(window3.get(), children[3]);
   }
 
-  // Re-enter tablet mode. window3 still has the backdrop.
+  // Re-enter tablet mode. Clearing the property is a no-op in this case.
   SetTabletModeEnabled(true);
+  window3->ClearProperty(kBackdropWindowMode);
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
@@ -1460,8 +1444,9 @@
     EXPECT_EQ(window3.get(), children[3]);
   }
 
-  // Explicitly disable backdrop on window3 will move the backdrop to window2.
-  WindowBackdrop::Get(window3.get())->DisableBackdrop();
+  // Setting the property explicitly to kDisabled will move the backdrop to
+  // window2.
+  window3->SetProperty(kBackdropWindowMode, BackdropWindowMode::kDisabled);
   {
     aura::Window::Windows children = window1->parent()->children();
     EXPECT_EQ(4U, children.size());
@@ -1522,8 +1507,7 @@
       &delegate, 0, gfx::Rect(0, 0, 100, 100)));
   window->Show();
 
-  WindowBackdrop::Get(window.get())
-      ->SetBackdropMode(WindowBackdrop::BackdropMode::kEnabled);
+  window->SetProperty(kBackdropWindowMode, BackdropWindowMode::kEnabled);
   EXPECT_TRUE(test_helper.GetBackdropWindow());
 
   ui::test::EventGenerator* generator = GetEventGenerator();
@@ -2033,8 +2017,8 @@
   always_on_top_window->Show();
   always_on_top_window->SetProperty(aura::client::kZOrderingKey,
                                     ui::ZOrderLevel::kFloatingWindow);
-  WindowBackdrop::Get(always_on_top_window.get())
-      ->SetBackdropMode(WindowBackdrop::BackdropMode::kEnabled);
+  always_on_top_window->SetProperty(kBackdropWindowMode,
+                                    BackdropWindowMode::kEnabled);
 
   aura::Window* always_on_top_container =
   always_on_top_controller->GetContainer(always_on_top_window.get());
diff --git a/base/mac/sdk_forward_declarations.h b/base/mac/sdk_forward_declarations.h
index 2a13a53..b7bebd9 100644
--- a/base/mac/sdk_forward_declarations.h
+++ b/base/mac/sdk_forward_declarations.h
@@ -27,33 +27,6 @@
 // OSX SDK being compiled against.
 // ----------------------------------------------------------------------------
 
-#if !defined(MAC_OS_X_VERSION_10_11) || \
-    MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11
-
-enum {
-  NSPressureBehaviorUnknown = -1,
-  NSPressureBehaviorPrimaryDefault = 0,
-  NSPressureBehaviorPrimaryClick = 1,
-  NSPressureBehaviorPrimaryGeneric = 2,
-  NSPressureBehaviorPrimaryAccelerator = 3,
-  NSPressureBehaviorPrimaryDeepClick = 5,
-  NSPressureBehaviorPrimaryDeepDrag = 6
-};
-typedef NSInteger NSPressureBehavior;
-
-@interface NSPressureConfiguration : NSObject
-- (instancetype)initWithPressureBehavior:(NSPressureBehavior)pressureBehavior;
-@end
-
-enum {
-  NSSpringLoadingHighlightNone = 0,
-  NSSpringLoadingHighlightStandard,
-  NSSpringLoadingHighlightEmphasized
-};
-typedef NSUInteger NSSpringLoadingHighlight;
-
-#endif  // MAC_OS_X_VERSION_10_11
-
 #if !defined(MAC_OS_X_VERSION_10_12) || \
     MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12
 
@@ -64,93 +37,15 @@
 - (void)animationDidStop:(CAAnimation*)animation finished:(BOOL)finished;
 @end
 
-@protocol CALayerDelegate
-@end
-
 #endif  // MAC_OS_X_VERSION_10_12
 
 // ----------------------------------------------------------------------------
-// Define NSStrings only available in newer versions of the OSX SDK to force
-// them to be statically linked.
-// ----------------------------------------------------------------------------
-
-extern "C" {
-#if !defined(MAC_OS_X_VERSION_10_10) || \
-    MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10
-BASE_EXPORT extern NSString* const CIDetectorTypeQRCode;
-BASE_EXPORT extern NSString* const NSUserActivityTypeBrowsingWeb;
-BASE_EXPORT extern NSString* const NSAppearanceNameVibrantDark;
-BASE_EXPORT extern NSString* const NSAppearanceNameVibrantLight;
-#endif  // MAC_OS_X_VERSION_10_10
-}  // extern "C"
-
-// ----------------------------------------------------------------------------
 // If compiling against an older version of the OSX SDK, declare classes and
 // functions that are available in newer versions of the OSX SDK. If compiling
 // against a newer version of the OSX SDK, redeclare those same classes and
 // functions to suppress -Wpartial-availability warnings.
 // ----------------------------------------------------------------------------
 
-// Once Chrome no longer supports OSX 10.9, everything within this preprocessor
-// block can be removed.
-#if !defined(MAC_OS_X_VERSION_10_10) || \
-    MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10
-
-@interface NSUserActivity (YosemiteSDK)
-@property(readonly, copy) NSString* activityType;
-@property(copy) NSDictionary* userInfo;
-@property(copy) NSURL* webpageURL;
-@property(copy) NSString* title;
-- (instancetype)initWithActivityType:(NSString*)activityType;
-- (void)becomeCurrent;
-- (void)invalidate;
-@end
-
-@interface CBUUID (YosemiteSDK)
-- (NSString*)UUIDString;
-@end
-
-@interface NSViewController (YosemiteSDK)
-- (void)viewDidLoad;
-@end
-
-@interface NSWindow (YosemiteSDK)
-- (void)setTitlebarAppearsTransparent:(BOOL)flag;
-@end
-
-@interface NSProcessInfo (YosemiteSDK)
-@property(readonly) NSOperatingSystemVersion operatingSystemVersion;
-@end
-
-@interface NSLayoutConstraint (YosemiteSDK)
-@property(getter=isActive) BOOL active;
-+ (void)activateConstraints:(NSArray*)constraints;
-@end
-
-@interface NSVisualEffectView (YosemiteSDK)
-- (void)setState:(NSVisualEffectState)state;
-@end
-
-@class NSVisualEffectView;
-
-@interface CIQRCodeFeature (YosemiteSDK)
-@property(readonly) CGRect bounds;
-@property(readonly) CGPoint topLeft;
-@property(readonly) CGPoint topRight;
-@property(readonly) CGPoint bottomLeft;
-@property(readonly) CGPoint bottomRight;
-@property(readonly, copy) NSString* messageString;
-@end
-
-@class CIQRCodeFeature;
-
-@interface NSView (YosemiteSDK)
-- (BOOL)isAccessibilitySelectorAllowed:(SEL)selector;
-@property(copy) NSString* accessibilityLabel;
-@end
-
-#endif  // MAC_OS_X_VERSION_10_10
-
 // Once Chrome no longer supports OSX 10.10.2, everything within this
 // preprocessor block can be removed.
 #if !defined(MAC_OS_X_VERSION_10_10_3) || \
@@ -224,40 +119,6 @@
 
 #endif  // MAC_OS_X_VERSION_10_12
 
-// Once Chrome no longer supports OSX 10.12.0, everything within this
-// preprocessor block can be removed.
-#if !defined(MAC_OS_X_VERSION_10_12_1) || \
-    MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12_1
-
-@interface NSButton (SierraPointOneSDK)
-@property(copy) NSColor* bezelColor;
-@property BOOL imageHugsTitle;
-+ (instancetype)buttonWithTitle:(NSString*)title
-                         target:(id)target
-                         action:(SEL)action;
-+ (instancetype)buttonWithImage:(NSImage*)image
-                         target:(id)target
-                         action:(SEL)action;
-+ (instancetype)buttonWithTitle:(NSString*)title
-                          image:(NSImage*)image
-                         target:(id)target
-                         action:(SEL)action;
-@end
-
-@interface NSSegmentedControl (SierraPointOneSDK)
-+ (instancetype)segmentedControlWithImages:(NSArray*)images
-                              trackingMode:(NSSegmentSwitchTracking)trackingMode
-                                    target:(id)target
-                                    action:(SEL)action;
-@end
-
-@interface NSTextField (SierraPointOneSDK)
-+ (instancetype)labelWithAttributedString:
-    (NSAttributedString*)attributedStringValue;
-@end
-
-#endif  // MAC_OS_X_VERSION_10_12_1
-
 // Once Chrome no longer supports OSX 10.12, everything within this
 // preprocessor block can be removed.
 #if !defined(MAC_OS_X_VERSION_10_13) || \
@@ -390,12 +251,4 @@
 // ----------------------------------------------------------------------------
 BASE_EXPORT extern "C" NSString* const kCWSSIDDidChangeNotification;
 
-// Once Chrome is built with at least the macOS 10.13 SDK, everything within
-// this preprocessor block can be removed.
-#if !defined(MAC_OS_X_VERSION_10_13)
-typedef NSString* NSTextCheckingOptionKey;
-typedef NSString* NSAccessibilityRole;
-typedef NSString* NSAccessibilitySubrole;
-#endif
-
 #endif  // BASE_MAC_SDK_FORWARD_DECLARATIONS_H_
diff --git a/base/mac/sdk_forward_declarations.mm b/base/mac/sdk_forward_declarations.mm
index 1235e51a..466949a6 100644
--- a/base/mac/sdk_forward_declarations.mm
+++ b/base/mac/sdk_forward_declarations.mm
@@ -4,16 +4,6 @@
 
 #include "base/mac/sdk_forward_declarations.h"
 
-#if !defined(MAC_OS_X_VERSION_10_10) || \
-    MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10
-NSString* const CIDetectorTypeQRCode = @"CIDetectorTypeQRCode";
-
-NSString* const NSUserActivityTypeBrowsingWeb =
-    @"NSUserActivityTypeBrowsingWeb";
-
-NSString* const NSAppearanceNameVibrantDark = @"NSAppearanceNameVibrantDark";
-#endif  // MAC_OS_X_VERSION_10_10
-
 #if !defined(MAC_OS_X_VERSION_10_11) || \
     MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11
 NSString* const CIDetectorTypeText = @"CIDetectorTypeText";
diff --git a/cc/trees/layer_tree_host_unittest.cc b/cc/trees/layer_tree_host_unittest.cc
index 0bbbb630..3f08f5a 100644
--- a/cc/trees/layer_tree_host_unittest.cc
+++ b/cc/trees/layer_tree_host_unittest.cc
@@ -1497,7 +1497,8 @@
 
 // This behavior is specific to Android WebView, which only uses
 // multi-threaded compositor.
-MULTI_THREAD_TEST_F(LayerTreeHostTestEarlyDamageCheckStops);
+// TODO (crbug.com/1043900): Disabled because test is flaky on Mac10.13.
+// MULTI_THREAD_TEST_F(LayerTreeHostTestEarlyDamageCheckStops);
 
 // When settings->enable_early_damage_check is true, verifies that PrepareTiles
 // need not cause a draw when there is no visible damage. Here, a child layer is
diff --git a/chrome/android/chrome_test_java_sources.gni b/chrome/android/chrome_test_java_sources.gni
index bf6a2c0d9..bd44746 100644
--- a/chrome/android/chrome_test_java_sources.gni
+++ b/chrome/android/chrome_test_java_sources.gni
@@ -438,6 +438,7 @@
   "javatests/src/org/chromium/chrome/browser/signin/ProfileDataCacheRenderTest.java",
   "javatests/src/org/chromium/chrome/browser/signin/SigninFragmentTest.java",
   "javatests/src/org/chromium/chrome/browser/signin/SigninHelperTest.java",
+  "javatests/src/org/chromium/chrome/browser/signin/SigninSignoutIntegrationTest.java",
   "javatests/src/org/chromium/chrome/browser/signin/SigninTest.java",
   "javatests/src/org/chromium/chrome/browser/sms/SmsReceiverInfoBarTest.java",
   "javatests/src/org/chromium/chrome/browser/ssl/CaptivePortalTest.java",
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantBottomBarCoordinator.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantBottomBarCoordinator.java
index cb78f22..3ddf8c8 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantBottomBarCoordinator.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AssistantBottomBarCoordinator.java
@@ -194,7 +194,7 @@
         model.addObserver((source, propertyKey) -> {
             if (AssistantModel.VISIBLE == propertyKey) {
                 if (model.get(AssistantModel.VISIBLE)) {
-                    showAndExpand();
+                    showContentAndExpand();
                 } else {
                     hide();
                 }
@@ -277,7 +277,7 @@
     }
 
     /** Request showing the Assistant bottom bar view and expand the sheet. */
-    public void showAndExpand() {
+    public void showContentAndExpand() {
         BottomSheetUtils.showContentAndExpand(
                 mBottomSheetController, mContent, /* animate= */ true);
     }
@@ -301,6 +301,16 @@
         maybeShowHeaderChip();
     }
 
+    /** Expand the bottom sheet. */
+    void expand() {
+        mBottomSheetController.expandSheet();
+    }
+
+    /** Collapse the bottom sheet to the peek mode. */
+    void collapse() {
+        mBottomSheetController.collapseSheet(/* animate = */ true);
+    }
+
     @Override
     public void setShowOnlyCarousels(boolean showOnlyCarousels) {
         mScrollableContent.setVisibility(showOnlyCarousels ? View.GONE : View.VISIBLE);
diff --git a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java
index 831dff4d..29058dd 100644
--- a/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java
+++ b/chrome/android/features/autofill_assistant/java/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantUiController.java
@@ -193,8 +193,18 @@
     }
 
     @CalledByNative
+    private void showContentAndExpandBottomSheet() {
+        mCoordinator.getBottomBarCoordinator().showContentAndExpand();
+    }
+
+    @CalledByNative
     private void expandBottomSheet() {
-        mCoordinator.getBottomBarCoordinator().showAndExpand();
+        mCoordinator.getBottomBarCoordinator().expand();
+    }
+
+    @CalledByNative
+    private void collapseBottomSheet() {
+        mCoordinator.getBottomBarCoordinator().collapse();
     }
 
     @CalledByNative
diff --git a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPaymentTest.java b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPaymentTest.java
index 98b9e858..cfaf801 100644
--- a/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPaymentTest.java
+++ b/chrome/android/features/autofill_assistant/javatests/src/org/chromium/chrome/browser/autofill_assistant/AutofillAssistantPaymentTest.java
@@ -21,6 +21,7 @@
 
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.allOf;
+import static org.hamcrest.Matchers.greaterThan;
 import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.not;
@@ -54,6 +55,7 @@
 import org.chromium.chrome.browser.autofill_assistant.proto.FocusElementProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.PromptProto.Choice;
+import org.chromium.chrome.browser.autofill_assistant.proto.SetFormFieldValueProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.SupportedScriptProto.PresentationProto;
 import org.chromium.chrome.browser.autofill_assistant.proto.TextInputProto;
@@ -159,6 +161,42 @@
     }
 
     /**
+     * Fill a form with a password generated by Chrome.
+     */
+    @Test
+    @MediumTest
+    public void testEnterGeneratedPassword() throws Exception {
+        ArrayList<ActionProto> list = new ArrayList<>();
+        list.add(
+                (ActionProto) ActionProto.newBuilder()
+                        .setSetFormValue(
+                                SetFormFieldValueProto.newBuilder()
+                                        .addValue(SetFormFieldValueProto.KeyPress.newBuilder()
+                                                          .setGeneratePassword(true))
+                                        .setElement(ElementReferenceProto.newBuilder().addSelectors(
+                                                "#password")))
+                        .build());
+        list.add((ActionProto) ActionProto.newBuilder()
+                         .setPrompt(PromptProto.newBuilder().setMessage("Prompt").addChoices(
+                                 PromptProto.Choice.newBuilder()))
+                         .build());
+        AutofillAssistantTestScript script = new AutofillAssistantTestScript(
+                (SupportedScriptProto) SupportedScriptProto.newBuilder()
+                        .setPath("form_target_website.html")
+                        .setPresentation(PresentationProto.newBuilder().setAutostart(true).setChip(
+                                ChipProto.newBuilder().setText("Password generation")))
+                        .build(),
+                list);
+
+        AutofillAssistantTestService testService =
+                new AutofillAssistantTestService(Collections.singletonList(script));
+        startAutofillAssistant(mTestRule.getActivity(), testService);
+
+        waitUntilViewMatchesCondition(withText("Prompt"), isCompletelyDisplayed());
+        assertThat(getElementValue("password", getWebContents()).length(), greaterThan(0));
+    }
+
+    /**
      * Showcasts an element of the webpage and checks that it can be interacted with.
      */
     @Test
diff --git a/chrome/android/java/monochrome_public_bundle.proguard_flags.expected b/chrome/android/java/monochrome_public_bundle.proguard_flags.expected
index 22d3724..16b5428 100644
--- a/chrome/android/java/monochrome_public_bundle.proguard_flags.expected
+++ b/chrome/android/java/monochrome_public_bundle.proguard_flags.expected
@@ -42,8 +42,11 @@
 -keep class com.android.webview.chromium.DrawGLFunctor
 -keep class com.android.webview.chromium.GraphicsUtils
 
--keep class org.chromium.android_webview.AwBrowserProcess {
+# The lock file object must be kept explicitly to avoid it being optimized
+# away and the lock released by the object's finalizer.
+-keep class org.chromium.android_webview.AwDataDirLock {
     java.nio.channels.FileLock sExclusiveFileLock;
+    java.io.RandomAccessFile sLockFile;
 }
 
 # Workaround for crbug/1002847. Methods of BaseGmsClient are incorrectly
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java
index aa27836..b01d49aa 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java
@@ -114,7 +114,7 @@
                     Log.e(TAG, "Closing failed " + filePath + " (width: " + width + ") " + e);
                 }
 
-                Bitmap bitmap = decodedBitmap.first;
+                Bitmap bitmap = decodedBitmap != null ? decodedBitmap.first : null;
                 if (bitmap == null) {
                     Log.e(TAG, "Decode failed " + filePath + " (width: " + width + ")");
                     sendReply(callback, bundle); // Sends SUCCESS == false;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapView.java b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapView.java
index 473801d0..49cb4df 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapView.java
@@ -68,7 +68,7 @@
     // The image view containing the bitmap.
     private ImageView mIconView;
 
-    // The aspect ratio of the image (>1.0=portrait, <1.0=landscape).
+    // The aspect ratio of the image (>1.0=portrait, <1.0=landscape, invalid if -1).
     private float mRatio = -1;
 
     // The container for the small version of the video UI (duration and small play button).
@@ -411,10 +411,16 @@
      */
     public boolean setThumbnailBitmap(List<Bitmap> thumbnails, String videoDuration, float ratio) {
         assert thumbnails == null || thumbnails.size() > 0;
-        if (videoDuration == null) {
+
+        // There are four cases to consider:
+        // 1) When placeholders are assigned, thumbnails=null and videoDuration=null.
+        // 2) When images are shown, videoDuration is null and thumbnail size is 1.
+        // 3) Videos: one thumbnail is shown first (videoDuration non-null, thumbnail.size() = 1).
+        // 4) Then, as more video frames are decoded (thumbnail.size() > 1).
+        // Only the last case needs to branch into the AnimationDrawable part.
+        if (videoDuration == null || thumbnails.size() == 1) {
             mIconView.setImageBitmap(thumbnails == null ? null : thumbnails.get(0));
         } else {
-            mVideoDuration.setText(videoDuration);
             final AnimationDrawable animationDrawable = new AnimationDrawable();
             for (int i = 0; i < thumbnails.size(); ++i) {
                 animationDrawable.addFrame(
@@ -425,6 +431,7 @@
             mIconView.setImageDrawable(animationDrawable);
             animationDrawable.start();
         }
+        mVideoDuration.setText(videoDuration);
 
         if (thumbnails != null && thumbnails.size() > 0) {
             mRatio = ratio;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapViewHolder.java
index 979b2c4c..2eb5550 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapViewHolder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerBitmapViewHolder.java
@@ -110,7 +110,7 @@
                 : mCategoryView.getHighResThumbnails().get(filePath);
         if (original != null) {
             mItemView.initialize(mBitmapDetails, original.bitmaps, original.videoDuration, false,
-                    original.ratio);
+                    original.ratioOriginal);
             return PickerAdapter.DecodeActions.FROM_CACHE;
         }
 
@@ -135,7 +135,7 @@
             bitmaps.add(placeholder);
 
             mItemView.initialize(
-                    mBitmapDetails, bitmaps, payload.videoDuration, true, payload.ratio);
+                    mBitmapDetails, bitmaps, payload.videoDuration, true, payload.ratioOriginal);
         } else {
             mItemView.initialize(mBitmapDetails, null, null, true, -1);
         }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java
index 12336363..2ae37cd0 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/photo_picker/PickerCategoryView.java
@@ -4,7 +4,6 @@
 
 package org.chromium.chrome.browser.photo_picker;
 
-import android.Manifest;
 import android.animation.Animator;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -35,6 +34,7 @@
 import androidx.annotation.VisibleForTesting;
 
 import org.chromium.base.DiscardableReferencePool.DiscardableReference;
+import org.chromium.base.ThreadUtils;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.task.AsyncTask;
 import org.chromium.base.task.PostTask;
@@ -83,13 +83,13 @@
         // The calculated ratio of the originals for the bitmaps above, were they to be shown
         // un-cropped. NOTE: The |bitmaps| above may already have been cropped and as such might
         // have a different ratio.
-        public float ratio;
+        public float ratioOriginal;
 
         Thumbnail(List<Bitmap> bitmaps, String videoDuration, Boolean fullWidth, float ratio) {
             this.bitmaps = bitmaps;
             this.videoDuration = videoDuration;
             this.fullWidth = fullWidth;
-            this.ratio = ratio;
+            this.ratioOriginal = ratio;
         }
     }
 
@@ -319,6 +319,13 @@
             mPickerAdapter.notifyDataSetChanged();
             mRecyclerView.requestLayout();
         }
+
+        if (mVideoControls.getVisibility() != View.GONE) {
+            // When configuration changes, the video overlay controls need to be synced to the new
+            // video size. Post a task, so that size adjustments happen after layout of the video
+            // controls has completed.
+            ThreadUtils.postOnUiThread(() -> { syncOverlayControlsSize(); });
+        }
     }
 
     /**
@@ -352,11 +359,7 @@
             startVideoPlayback();
 
             mMediaPlayer.setOnVideoSizeChangedListener(
-                    (MediaPlayer player, int width, int height) -> {
-                        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
-                                mVideoView.getMeasuredWidth(), mVideoView.getMeasuredHeight());
-                        mVideoControls.setLayoutParams(params);
-                    });
+                    (MediaPlayer player, int width, int height) -> { syncOverlayControlsSize(); });
 
             if (sProgressCallback != null) {
                 mMediaPlayer.setOnInfoListener((MediaPlayer player, int what, int extra) -> {
@@ -603,10 +606,6 @@
         return mImageWidth;
     }
 
-    public int getImageHeight() {
-        return mImageHeight;
-    }
-
     public int getSpecialTileHeight() {
         return mSpecialTileHeight;
     }
@@ -712,12 +711,6 @@
             mWorkerTask.cancel(true);
         }
 
-        // TODO(finnur): Remove once we figure out the cause of crbug.com/950024.
-        if (!mActivity.getWindowAndroid().hasPermission(
-                    Manifest.permission.READ_EXTERNAL_STORAGE)) {
-            throw new RuntimeException("Bitmap enumeration without storage read permission");
-        }
-
         mEnumStartTime = SystemClock.elapsedRealtime();
         mWorkerTask = new FileEnumWorkerTask(mActivity.getWindowAndroid(), this,
                 new MimeTypeFilter(mMimeTypes, true), mMimeTypes, mActivity.getContentResolver());
@@ -910,6 +903,12 @@
         }
     }
 
+    private void syncOverlayControlsSize() {
+        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
+                mVideoView.getMeasuredWidth(), mVideoView.getMeasuredHeight());
+        mVideoControls.setLayoutParams(params);
+    }
+
     private void toggleMute() {
         mAudioOn = !mAudioOn;
         if (mAudioOn) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/sync/AccountManagementFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/sync/AccountManagementFragment.java
index af8720e1..1338fb1 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/sync/AccountManagementFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/sync/AccountManagementFragment.java
@@ -391,15 +391,6 @@
                         }
                     }
                 }, forceWipeUserData);
-        SigninUtils.logEvent(ProfileAccountManagementMetrics.SIGNOUT_SIGNOUT, mGaiaServiceType);
-    }
-
-    @Override
-    public void onSignOutDialogDismissed(boolean signOutClicked) {
-        // TODO(https://crbug.com/1038924): Signout is recorded twice when cancelled
-        if (!signOutClicked) {
-            SigninUtils.logEvent(ProfileAccountManagementMetrics.SIGNOUT_CANCEL, mGaiaServiceType);
-        }
     }
 
     // SignInStateObserver implementation:
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SignOutDialogFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SignOutDialogFragment.java
index 8aafc32..7a97539 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SignOutDialogFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SignOutDialogFragment.java
@@ -31,7 +31,7 @@
     private static final String SHOW_GAIA_SERVICE_TYPE_EXTRA = "ShowGAIAServiceType";
 
     /**
-     * Receives updates when the user clicks "Sign out" or dismisses the dialog.
+     * Receives updates when the user clicks "Sign out".
      */
     public interface SignOutDialogListener {
         /**
@@ -40,17 +40,8 @@
          * @param forceWipeUserData Whether the user selected to wipe local device data.
          */
         void onSignOutClicked(boolean forceWipeUserData);
-
-        /**
-         * Called when the dialog is dismissed.
-         *
-         * @param signOutClicked Whether the user clicked the "sign out" button before the dialog
-         *                       was dismissed.
-         */
-        void onSignOutDialogDismissed(boolean signOutClicked);
     }
 
-    private boolean mSignOutClicked;
     private CheckBox mWipeUserData;
 
     /**
@@ -108,8 +99,6 @@
     public void onClick(DialogInterface dialog, int which) {
         if (which == AlertDialog.BUTTON_POSITIVE) {
             SigninUtils.logEvent(ProfileAccountManagementMetrics.SIGNOUT_SIGNOUT, mGaiaServiceType);
-
-            mSignOutClicked = true;
             if (IdentityServicesProvider.get().getSigninManager().getManagementDomain() == null) {
                 RecordHistogram.recordBooleanHistogram(
                         "Signin.UserRequestedWipeDataOnSignout", mWipeUserData.isChecked());
@@ -123,8 +112,5 @@
     public void onDismiss(DialogInterface dialog) {
         super.onDismiss(dialog);
         SigninUtils.logEvent(ProfileAccountManagementMetrics.SIGNOUT_CANCEL, mGaiaServiceType);
-
-        SignOutDialogListener targetFragment = (SignOutDialogListener) getTargetFragment();
-        targetFragment.onSignOutDialogDismissed(mSignOutClicked);
     }
 }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/photo_picker/PhotoPickerDialogTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/photo_picker/PhotoPickerDialogTest.java
index d69040d..5c51b115 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/photo_picker/PhotoPickerDialogTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/photo_picker/PhotoPickerDialogTest.java
@@ -6,6 +6,7 @@
 
 import android.net.Uri;
 import android.os.Build;
+import android.os.StrictMode;
 import android.support.test.filters.LargeTest;
 import android.support.v7.widget.RecyclerView;
 import android.view.View;
@@ -329,39 +330,49 @@
     @LargeTest
     @DisableIf.Build(sdk_is_less_than = Build.VERSION_CODES.N) // Video is only supported on N+.
     public void testVideoPlayerPlayAndRestart() throws Throwable {
-        createDialog(true, Arrays.asList("image/*")); // Multi-select = true.
-        Assert.assertTrue(mDialog.isShowing());
-        waitForDecoder();
+        // Requesting to play a video is not a case of an accidental disk read on the UI thread.
+        StrictMode.ThreadPolicy oldPolicy = TestThreadUtils.runOnUiThreadBlocking(
+                () -> { return StrictMode.allowThreadDiskReads(); });
 
-        PickerCategoryView categoryView = mDialog.getCategoryViewForTesting();
+        try {
+            createDialog(true, Arrays.asList("image/*")); // Multi-select = true.
+            Assert.assertTrue(mDialog.isShowing());
+            waitForDecoder();
 
-        View container = categoryView.findViewById(R.id.playback_container);
-        Assert.assertTrue(container.getVisibility() == View.GONE);
+            PickerCategoryView categoryView = mDialog.getCategoryViewForTesting();
 
-        // This test video takes less than a second to play.
-        String fileName = "chrome/test/data/android/photo_picker/noogler.mp4";
-        File file = new File(UrlUtils.getIsolatedTestFilePath(fileName));
+            View container = categoryView.findViewById(R.id.playback_container);
+            Assert.assertTrue(container.getVisibility() == View.GONE);
 
-        int callCount = onVideoEndedCallback.getCallCount();
+            // This test video takes less than a second to play.
+            String fileName = "chrome/test/data/android/photo_picker/noogler.mp4";
+            File file = new File(UrlUtils.getIsolatedTestFilePath(fileName));
 
-        playVideo(Uri.fromFile(file));
-        Assert.assertTrue(container.getVisibility() == View.VISIBLE);
+            int callCount = onVideoEndedCallback.getCallCount();
 
-        onVideoEndedCallback.waitForCallback(callCount, 1);
+            playVideo(Uri.fromFile(file));
+            Assert.assertTrue(container.getVisibility() == View.VISIBLE);
 
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            View mute = categoryView.findViewById(R.id.mute);
-            categoryView.onClick(mute);
-        });
+            onVideoEndedCallback.waitForCallback(callCount, 1);
 
-        // Clicking the play button should restart playback.
-        callCount = onVideoEndedCallback.getCallCount();
+            TestThreadUtils.runOnUiThreadBlocking(() -> {
+                View mute = categoryView.findViewById(R.id.mute);
+                categoryView.onClick(mute);
+            });
 
-        TestThreadUtils.runOnUiThreadBlocking(() -> {
-            View playbutton = categoryView.findViewById(R.id.video_player_play_button);
-            categoryView.onClick(playbutton);
-        });
+            // Clicking the play button should restart playback.
+            callCount = onVideoEndedCallback.getCallCount();
 
-        onVideoEndedCallback.waitForCallback(callCount, 1);
+            TestThreadUtils.runOnUiThreadBlocking(() -> {
+                View playbutton = categoryView.findViewById(R.id.video_player_play_button);
+                categoryView.onClick(playbutton);
+            });
+
+            onVideoEndedCallback.waitForCallback(callCount, 1);
+
+            dismissDialog();
+        } finally {
+            TestThreadUtils.runOnUiThreadBlocking(() -> { StrictMode.setThreadPolicy(oldPolicy); });
+        }
     }
 }
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninSignoutIntegrationTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninSignoutIntegrationTest.java
new file mode 100644
index 0000000..6c41d91
--- /dev/null
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/signin/SigninSignoutIntegrationTest.java
@@ -0,0 +1,184 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.signin;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.action.ViewActions.pressBack;
+import static android.support.test.espresso.matcher.RootMatchers.isDialog;
+import static android.support.test.espresso.matcher.ViewMatchers.isRoot;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static android.support.test.espresso.matcher.ViewMatchers.withText;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+import android.accounts.Account;
+import android.support.test.InstrumentationRegistry;
+
+import androidx.test.filters.LargeTest;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.JniMocker;
+import org.chromium.chrome.R;
+import org.chromium.chrome.browser.ChromeActivity;
+import org.chromium.chrome.browser.ChromeSwitches;
+import org.chromium.chrome.browser.profiles.ProfileAccountManagementMetrics;
+import org.chromium.chrome.browser.settings.sync.AccountManagementFragment;
+import org.chromium.chrome.test.ChromeActivityTestRule;
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
+import org.chromium.chrome.test.util.ActivityUtils;
+import org.chromium.chrome.test.util.browser.signin.SigninTestUtil;
+import org.chromium.components.signin.ChromeSigninController;
+import org.chromium.components.signin.GAIAServiceType;
+import org.chromium.components.signin.metrics.SigninAccessPoint;
+import org.chromium.content_public.browser.test.util.TestThreadUtils;
+import org.chromium.ui.test.util.DisableAnimationsTestRule;
+
+/**
+ * Test the lifecycle of sign-in and sign-out.
+ */
+@RunWith(ChromeJUnit4ClassRunner.class)
+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
+public class SigninSignoutIntegrationTest {
+    @Rule
+    public final DisableAnimationsTestRule mNoAnimationsRule = new DisableAnimationsTestRule();
+
+    @Rule
+    public final JniMocker mocker = new JniMocker();
+
+    @Mock
+    private SigninUtils.Natives mSigninUtilsNativeMock;
+
+    @Rule
+    public final ChromeActivityTestRule<ChromeActivity> mActivityTestRule =
+            new ChromeActivityTestRule<>(ChromeActivity.class);
+
+    @Mock
+    private SigninManager.SignInStateObserver mSignInStateObserverMock;
+
+    private SigninManager mSigninManager;
+
+    @Before
+    public void setUp() {
+        initMocks(this);
+        mocker.mock(SigninUtilsJni.TEST_HOOKS, mSigninUtilsNativeMock);
+        SigninTestUtil.setUpAuthForTest();
+        mActivityTestRule.startMainActivityOnBlankPage();
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> { mSigninManager = IdentityServicesProvider.get().getSigninManager(); });
+        mSigninManager.addSignInStateObserver(mSignInStateObserverMock);
+    }
+
+    @After
+    public void tearDown() {
+        mSigninManager.removeSignInStateObserver(mSignInStateObserverMock);
+        SigninTestUtil.tearDownAuthForTest();
+    }
+
+    @Test
+    @LargeTest
+    public void testSignIn() {
+        Account account = SigninTestUtil.addTestAccount();
+        ActivityUtils.waitForActivity(
+                InstrumentationRegistry.getInstrumentation(), SigninActivity.class, () -> {
+                    SigninActivityLauncher.get().launchActivity(
+                            mActivityTestRule.getActivity(), SigninAccessPoint.SETTINGS);
+                });
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertFalse("Account should not be signed in!",
+                    mSigninManager.getIdentityManager().hasPrimaryAccount());
+            Assert.assertNull(mSigninManager.getIdentityManager().getPrimaryAccountInfo());
+        });
+        onView(withId(R.id.positive_button)).perform(click());
+        verify(mSignInStateObserverMock).onSignedIn();
+        verify(mSignInStateObserverMock, never()).onSignedOut();
+        assertSignedIn();
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertEquals(account,
+                    mSigninManager.getIdentityManager().getPrimaryAccountInfo().getAccount());
+        });
+    }
+
+    @Test
+    @LargeTest
+    public void testSignOut() {
+        signIn();
+        mActivityTestRule.startSettingsActivity(AccountManagementFragment.class.getName());
+        onView(withText(R.string.sign_out_and_turn_off_sync)).perform(click());
+        onView(withText(R.string.continue_button)).inRoot(isDialog()).perform(click());
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertFalse("Account should be signed out!",
+                    mSigninManager.getIdentityManager().hasPrimaryAccount());
+            Assert.assertNull(mSigninManager.getIdentityManager().getPrimaryAccountInfo());
+        });
+        verify(mSignInStateObserverMock).onSignedOut();
+        verify(mSigninUtilsNativeMock)
+                .logEvent(ProfileAccountManagementMetrics.TOGGLE_SIGNOUT,
+                        GAIAServiceType.GAIA_SERVICE_TYPE_NONE);
+        verify(mSigninUtilsNativeMock)
+                .logEvent(ProfileAccountManagementMetrics.SIGNOUT_SIGNOUT,
+                        GAIAServiceType.GAIA_SERVICE_TYPE_NONE);
+    }
+
+    @Test
+    @LargeTest
+    public void testSignOutDismissedByPressingBack() {
+        signIn();
+        mActivityTestRule.startSettingsActivity(AccountManagementFragment.class.getName());
+        onView(withText(R.string.sign_out_and_turn_off_sync)).perform(click());
+        onView(isRoot()).perform(pressBack());
+        verify(mSignInStateObserverMock, never()).onSignedOut();
+        assertSignedIn();
+        verify(mSigninUtilsNativeMock)
+                .logEvent(ProfileAccountManagementMetrics.TOGGLE_SIGNOUT,
+                        GAIAServiceType.GAIA_SERVICE_TYPE_NONE);
+        verify(mSigninUtilsNativeMock)
+                .logEvent(ProfileAccountManagementMetrics.SIGNOUT_CANCEL,
+                        GAIAServiceType.GAIA_SERVICE_TYPE_NONE);
+    }
+
+    @Test
+    @LargeTest
+    public void testSignOutCancelled() {
+        signIn();
+        mActivityTestRule.startSettingsActivity(AccountManagementFragment.class.getName());
+        onView(withText(R.string.sign_out_and_turn_off_sync)).perform(click());
+        onView(withText(R.string.cancel)).inRoot(isDialog()).perform(click());
+        verify(mSignInStateObserverMock, never()).onSignedOut();
+        assertSignedIn();
+        verify(mSigninUtilsNativeMock)
+                .logEvent(ProfileAccountManagementMetrics.TOGGLE_SIGNOUT,
+                        GAIAServiceType.GAIA_SERVICE_TYPE_NONE);
+        verify(mSigninUtilsNativeMock)
+                .logEvent(ProfileAccountManagementMetrics.SIGNOUT_CANCEL,
+                        GAIAServiceType.GAIA_SERVICE_TYPE_NONE);
+    }
+
+    private void signIn() {
+        Account account = SigninTestUtil.addTestAccount();
+        TestThreadUtils.runOnUiThreadBlocking(
+                () -> { mSigninManager.signIn(SigninAccessPoint.SETTINGS, account, null); });
+        assertSignedIn();
+        // TODO(https://crbug.com/1041815): Usage of ChromeSigninController should be removed later
+        Assert.assertTrue(ChromeSigninController.get().isSignedIn());
+    }
+
+    private void assertSignedIn() {
+        TestThreadUtils.runOnUiThreadBlocking(() -> {
+            Assert.assertTrue("Account should be signed in!",
+                    mSigninManager.getIdentityManager().hasPrimaryAccount());
+        });
+    }
+}
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserTransitionTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserTransitionTest.java
index 4b2f9b2..320050e 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserTransitionTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserTransitionTest.java
@@ -31,6 +31,7 @@
 import org.chromium.base.StrictModeContext;
 import org.chromium.base.test.BundleTestRule;
 import org.chromium.base.test.util.CommandLineFlags;
+import org.chromium.base.test.util.FlakyTest;
 import org.chromium.base.test.util.MinAndroidSdkLevel;
 import org.chromium.base.test.util.Restriction;
 import org.chromium.chrome.R;
@@ -465,6 +466,7 @@
     @Test
     @Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM)
     @MediumTest
+    @FlakyTest(message = "crbug.com/1032769")
     public void testIncognitoLearnMoreTriggersDoff() {
         mTestRule.newIncognitoTabFromMenu();
         VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/signin/SignOutDialogFragmentTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/signin/SignOutDialogFragmentTest.java
index fd8fc26..e44cad2c 100644
--- a/chrome/android/junit/src/org/chromium/chrome/browser/signin/SignOutDialogFragmentTest.java
+++ b/chrome/android/junit/src/org/chromium/chrome/browser/signin/SignOutDialogFragmentTest.java
@@ -43,9 +43,6 @@
             extends Fragment implements SignOutDialogFragment.SignOutDialogListener {
         @Override
         public void onSignOutClicked(boolean forceWipeUserData) {}
-
-        @Override
-        public void onSignOutDialogDismissed(boolean signOutClicked) {}
     }
 
     @Rule
@@ -87,7 +84,7 @@
     @Test
     public void testMessageWhenAccountIsManaged() {
         when(mSigninManagerMock.getManagementDomain()).thenReturn(TEST_DOMAIN);
-        AlertDialog alertDialog = getSignOutAlertDialogAfterShowingIt();
+        AlertDialog alertDialog = showSignOutAlertDialog();
         TextView messageTextView = alertDialog.findViewById(android.R.id.message);
         assertEquals(
                 mSignOutDialog.getString(R.string.signout_managed_account_message, TEST_DOMAIN),
@@ -97,7 +94,7 @@
     @Test
     public void testPositiveButtonWhenAccountIsManaged() {
         when(mSigninManagerMock.getManagementDomain()).thenReturn(TEST_DOMAIN);
-        AlertDialog alertDialog = getSignOutAlertDialogAfterShowingIt();
+        AlertDialog alertDialog = showSignOutAlertDialog();
         alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
         verify(mSigninUtilsNativeMock)
                 .logEvent(ProfileAccountManagementMetrics.SIGNOUT_SIGNOUT,
@@ -107,7 +104,7 @@
 
     @Test
     public void testPositiveButtonWhenAccountIsNotManagedAndRemoveLocalDataNotChecked() {
-        AlertDialog alertDialog = getSignOutAlertDialogAfterShowingIt();
+        AlertDialog alertDialog = showSignOutAlertDialog();
         alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
         verify(mSigninUtilsNativeMock)
                 .logEvent(ProfileAccountManagementMetrics.SIGNOUT_SIGNOUT,
@@ -117,7 +114,7 @@
 
     @Test
     public void testPositiveButtonWhenAccountIsNotManagedAndRemoveLocalDataChecked() {
-        AlertDialog alertDialog = getSignOutAlertDialogAfterShowingIt();
+        AlertDialog alertDialog = showSignOutAlertDialog();
         alertDialog.findViewById(R.id.remove_local_data).performClick();
         alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
         verify(mSigninUtilsNativeMock)
@@ -127,42 +124,37 @@
     }
 
     @Test
-    public void testNegativeButtonHasNoEffectWhenAccountIsManaged() {
+    public void testNegativeButtonWhenAccountIsManaged() {
         when(mSigninManagerMock.getManagementDomain()).thenReturn(TEST_DOMAIN);
-        AlertDialog alertDialog = getSignOutAlertDialogAfterShowingIt();
+        AlertDialog alertDialog = showSignOutAlertDialog();
         alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).performClick();
         verify(mTargetFragment, never()).onSignOutClicked(anyBoolean());
-    }
-
-    @Test
-    public void testNegativeButtonHasNoEffectWhenAccountIsNotManaged() {
-        AlertDialog alertDialog = getSignOutAlertDialogAfterShowingIt();
-        alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).performClick();
-        verify(mTargetFragment, never()).onSignOutClicked(anyBoolean());
-    }
-
-    @Test
-    public void testDismissWhenPositiveButtonIsNotClicked() {
-        AlertDialog alertDialog = getSignOutAlertDialogAfterShowingIt();
-        alertDialog.dismiss();
         verify(mSigninUtilsNativeMock)
                 .logEvent(ProfileAccountManagementMetrics.SIGNOUT_CANCEL,
                         GAIAServiceType.GAIA_SERVICE_TYPE_NONE);
-        verify(mTargetFragment).onSignOutDialogDismissed(false);
     }
 
     @Test
-    public void testDismissWhenPositiveButtonIsClicked() {
-        AlertDialog alertDialog = getSignOutAlertDialogAfterShowingIt();
-        alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).performClick();
-        alertDialog.dismiss();
+    public void testNegativeButtonWhenAccountIsNotManaged() {
+        AlertDialog alertDialog = showSignOutAlertDialog();
+        alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).performClick();
+        verify(mTargetFragment, never()).onSignOutClicked(anyBoolean());
         verify(mSigninUtilsNativeMock)
                 .logEvent(ProfileAccountManagementMetrics.SIGNOUT_CANCEL,
                         GAIAServiceType.GAIA_SERVICE_TYPE_NONE);
-        verify(mTargetFragment).onSignOutDialogDismissed(true);
     }
 
-    private AlertDialog getSignOutAlertDialogAfterShowingIt() {
+    @Test
+    public void testEventLoggedWhenDialogDismissed() {
+        AlertDialog alertDialog = showSignOutAlertDialog();
+        alertDialog.dismiss();
+        verify(mTargetFragment, never()).onSignOutClicked(anyBoolean());
+        verify(mSigninUtilsNativeMock)
+                .logEvent(ProfileAccountManagementMetrics.SIGNOUT_CANCEL,
+                        GAIAServiceType.GAIA_SERVICE_TYPE_NONE);
+    }
+
+    private AlertDialog showSignOutAlertDialog() {
         mSignOutDialog.show(mFragmentManager, null);
         return (AlertDialog) ShadowAlertDialog.getLatestDialog();
     }
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 64b88be..5e8faf87 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -13,7 +13,7 @@
 import("//build/config/ui.gni")
 import("//chrome/browser/buildflags.gni")
 import("//chrome/common/features.gni")
-import("//components/captive_portal/features.gni")
+import("//components/captive_portal/core/features.gni")
 import("//components/feature_engagement/features.gni")
 import("//components/feed/features.gni")
 import("//components/nacl/features.gni")
@@ -1593,6 +1593,8 @@
     "sharing/sharing_handler_registry_impl.cc",
     "sharing/sharing_handler_registry_impl.h",
     "sharing/sharing_message_bridge.h",
+    "sharing/sharing_message_bridge_factory.cc",
+    "sharing/sharing_message_bridge_factory.h",
     "sharing/sharing_message_bridge_impl.cc",
     "sharing/sharing_message_bridge_impl.h",
     "sharing/sharing_message_handler.h",
@@ -1987,8 +1989,9 @@
     "//components/browser_sync",
     "//components/browsing_data/content",
     "//components/browsing_data/core",
-    "//components/captive_portal",
-    "//components/captive_portal:buildflags",
+    "//components/captive_portal/content",
+    "//components/captive_portal/core",
+    "//components/captive_portal/core:buildflags",
     "//components/certificate_matching",
     "//components/certificate_transparency",
     "//components/cloud_devices/common",
@@ -2987,6 +2990,7 @@
       "//components/page_load_metrics/browser",
       "//components/paint_preview/browser/android",
       "//components/paint_preview/browser/android:jni_headers",
+      "//components/password_manager/content/browser",
       "//components/payments/content/android",
       "//components/resources:components_resources",
       "//components/send_tab_to_self",
@@ -3559,6 +3563,8 @@
       "sharing/sharing_notification_handler.h",
       "sharing/sharing_ui_controller.cc",
       "sharing/sharing_ui_controller.h",
+      "sharing/webrtc/ice_config_fetcher.cc",
+      "sharing/webrtc/ice_config_fetcher.h",
       "signin/signin_promo.cc",
       "signin/signin_promo.h",
       "signin/signin_ui_util.cc",
@@ -3713,6 +3719,7 @@
       "//chrome/services/app_service/public/cpp:icon_loader",
       "//chrome/services/app_service/public/cpp:intents",
       "//chrome/services/app_service/public/cpp:preferred_apps",
+      "//chrome/services/sharing/public/mojom",
       "//components/feedback",
       "//components/image_fetcher/core",
       "//components/keep_alive_registry",
@@ -4482,8 +4489,6 @@
     sources += [
       "captive_portal/captive_portal_login_detector.cc",
       "captive_portal/captive_portal_login_detector.h",
-      "captive_portal/captive_portal_service.cc",
-      "captive_portal/captive_portal_service.h",
       "captive_portal/captive_portal_service_factory.cc",
       "captive_portal/captive_portal_service_factory.h",
       "captive_portal/captive_portal_tab_helper.cc",
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index 3d285b9e..4e29d69 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -21,6 +21,7 @@
   "+chrome/services/file_util/public",
   "+chrome/services/media_gallery_util/public",
   "+chrome/services/printing/public",
+  "+chrome/services/sharing/public",
   "+chrome/services/removable_storage_writer/public",
   "+chrome/services/util_win/public",
   "+chromeos",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index ff26d8e..0bc1765 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2154,10 +2154,6 @@
     {"isolate-origins", flag_descriptions::kIsolateOriginsName,
      flag_descriptions::kIsolateOriginsDescription, kOsAll,
      ORIGIN_LIST_VALUE_TYPE(switches::kIsolateOrigins, "")},
-    {"kids-management-url-classification",
-     flag_descriptions::kKidsManagementUrlClassificationName,
-     flag_descriptions::kKidsManagementUrlClassificationDescription, kOsAll,
-     FEATURE_VALUE_TYPE(features::kKidsManagementUrlClassification)},
     {"site-isolation-trial-opt-out",
      flag_descriptions::kSiteIsolationOptOutName,
      flag_descriptions::kSiteIsolationOptOutDescription, kOsAll,
diff --git a/chrome/browser/android/autofill_assistant/client_android.cc b/chrome/browser/android/autofill_assistant/client_android.cc
index 084c337..683cf5fe 100644
--- a/chrome/browser/android/autofill_assistant/client_android.cc
+++ b/chrome/browser/android/autofill_assistant/client_android.cc
@@ -31,6 +31,8 @@
 #include "components/autofill_assistant/browser/controller.h"
 #include "components/autofill_assistant/browser/features.h"
 #include "components/autofill_assistant/browser/website_login_fetcher_impl.h"
+#include "components/password_manager/content/browser/content_password_manager_driver.h"
+#include "components/password_manager/content/browser/content_password_manager_driver_factory.h"
 #include "components/signin/public/identity_manager/account_info.h"
 #include "components/signin/public/identity_manager/identity_manager.h"
 #include "components/version_info/channel.h"
@@ -463,8 +465,16 @@
 
 WebsiteLoginFetcher* ClientAndroid::GetWebsiteLoginFetcher() {
   if (!website_login_fetcher_) {
-    website_login_fetcher_ = std::make_unique<WebsiteLoginFetcherImpl>(
-        ChromePasswordManagerClient::FromWebContents(web_contents_));
+    auto* client = ChromePasswordManagerClient::FromWebContents(web_contents_);
+    auto* factory =
+        password_manager::ContentPasswordManagerDriverFactory::FromWebContents(
+            web_contents_);
+    // TODO(crbug.com/1043132): Add support for non-main frames. If another
+    // frame has a different origin than the main frame, passwords-related
+    // features may not work.
+    auto* driver = factory->GetDriverForFrame(web_contents_->GetMainFrame());
+    website_login_fetcher_ =
+        std::make_unique<WebsiteLoginFetcherImpl>(client, driver);
   }
   return website_login_fetcher_.get();
 }
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android.cc b/chrome/browser/android/autofill_assistant/ui_controller_android.cc
index d566d55..20132fa3 100644
--- a/chrome/browser/android/autofill_assistant/ui_controller_android.cc
+++ b/chrome/browser/android/autofill_assistant/ui_controller_android.cc
@@ -326,6 +326,9 @@
     OnViewportModeChanged(ui_delegate->GetViewportMode());
     OnPeekModeChanged(ui_delegate->GetPeekMode());
     OnFormChanged(ui_delegate->GetForm());
+    // TODO(b/145204744): Store the collapsed or expanded state from the bottom
+    // sheet when detaching the UI so that it can be restored appropriately
+    // here.
 
     UiDelegate::OverlayColors colors;
     ui_delegate->GetOverlayColors(&colors);
@@ -369,6 +372,8 @@
 void UiControllerAndroid::SetupForState() {
   UpdateActions(ui_delegate_->GetUserActions());
   AutofillAssistantState state = ui_delegate_->GetState();
+  bool should_prompt_action_expand_sheet =
+      ui_delegate_->ShouldPromptActionExpandSheet();
   switch (state) {
     case AutofillAssistantState::STARTING:
       SetOverlayState(OverlayState::FULL);
@@ -387,8 +392,8 @@
       AllowShowingSoftKeyboard(true);
       SetSpinPoodle(false);
 
-      // user interaction is needed.
-      ExpandBottomSheet();
+      if (should_prompt_action_expand_sheet)
+        ShowContentAndExpandBottomSheet();
       return;
 
     case AutofillAssistantState::PROMPT:
@@ -396,8 +401,8 @@
       AllowShowingSoftKeyboard(true);
       SetSpinPoodle(false);
 
-      // user interaction is needed.
-      ExpandBottomSheet();
+      if (should_prompt_action_expand_sheet)
+        ShowContentAndExpandBottomSheet();
       return;
 
     case AutofillAssistantState::MODAL_DIALOG:
@@ -412,7 +417,7 @@
       SetSpinPoodle(false);
 
       // Make sure the user sees the error message.
-      ExpandBottomSheet();
+      ShowContentAndExpandBottomSheet();
       Detach();
       return;
 
@@ -469,6 +474,16 @@
                                                  java_object_, peek_mode);
 }
 
+void UiControllerAndroid::OnExpandBottomSheet() {
+  Java_AutofillAssistantUiController_expandBottomSheet(AttachCurrentThread(),
+                                                       java_object_);
+}
+
+void UiControllerAndroid::OnCollapseBottomSheet() {
+  Java_AutofillAssistantUiController_collapseBottomSheet(AttachCurrentThread(),
+                                                         java_object_);
+}
+
 void UiControllerAndroid::OnOverlayColorsChanged(
     const UiDelegate::OverlayColors& colors) {
   JNIEnv* env = AttachCurrentThread();
@@ -486,9 +501,9 @@
                                            enabled);
 }
 
-void UiControllerAndroid::ExpandBottomSheet() {
-  Java_AutofillAssistantUiController_expandBottomSheet(AttachCurrentThread(),
-                                                       java_object_);
+void UiControllerAndroid::ShowContentAndExpandBottomSheet() {
+  Java_AutofillAssistantUiController_showContentAndExpandBottomSheet(
+      AttachCurrentThread(), java_object_);
 }
 
 void UiControllerAndroid::SetSpinPoodle(bool enabled) {
diff --git a/chrome/browser/android/autofill_assistant/ui_controller_android.h b/chrome/browser/android/autofill_assistant/ui_controller_android.h
index e345f217..2d23d6a 100644
--- a/chrome/browser/android/autofill_assistant/ui_controller_android.h
+++ b/chrome/browser/android/autofill_assistant/ui_controller_android.h
@@ -103,6 +103,8 @@
   void OnViewportModeChanged(ViewportMode mode) override;
   void OnPeekModeChanged(
       ConfigureBottomSheetProto::PeekMode peek_mode) override;
+  void OnExpandBottomSheet() override;
+  void OnCollapseBottomSheet() override;
   void OnOverlayColorsChanged(const UiDelegate::OverlayColors& colors) override;
   void OnFormChanged(const FormProto* form) override;
   void OnClientSettingsChanged(const ClientSettings& settings) override;
@@ -203,7 +205,7 @@
 
   void SetOverlayState(OverlayState state);
   void AllowShowingSoftKeyboard(bool enabled);
-  void ExpandBottomSheet();
+  void ShowContentAndExpandBottomSheet();
   void SetSpinPoodle(bool enabled);
   std::string GetDebugContext();
   void DestroySelf();
diff --git a/chrome/browser/browser_switcher/browser_switcher_policy_migrator.cc b/chrome/browser/browser_switcher/browser_switcher_policy_migrator.cc
index 011ae87..c00ae89 100644
--- a/chrome/browser/browser_switcher/browser_switcher_policy_migrator.cc
+++ b/chrome/browser/browser_switcher/browser_switcher_policy_migrator.cc
@@ -51,8 +51,6 @@
       policy::POLICY_DOMAIN_EXTENSIONS, kLBSExtensionId));
   policy::PolicyMap& chrome_map =
       bundle->Get(policy::PolicyNamespace(policy::POLICY_DOMAIN_CHROME, ""));
-  if (extension_map.empty())
-    return;
 
   const auto* entry = chrome_map.Get("BrowserSwitcherEnabled");
   if (!entry || !entry->value || !entry->value->GetBool())
diff --git a/chrome/browser/captive_portal/captive_portal_browsertest.cc b/chrome/browser/captive_portal/captive_portal_browsertest.cc
index 6852c192..27d62a6 100644
--- a/chrome/browser/captive_portal/captive_portal_browsertest.cc
+++ b/chrome/browser/captive_portal/captive_portal_browsertest.cc
@@ -28,7 +28,6 @@
 #include "base/test/bind_test_util.h"
 #include "base/values.h"
 #include "build/build_config.h"
-#include "chrome/browser/captive_portal/captive_portal_service.h"
 #include "chrome/browser/captive_portal/captive_portal_service_factory.h"
 #include "chrome/browser/captive_portal/captive_portal_tab_helper.h"
 #include "chrome/browser/captive_portal/captive_portal_tab_reloader.h"
@@ -48,6 +47,7 @@
 #include "chrome/common/pref_names.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 #include "components/embedder_support/pref_names.h"
 #include "components/prefs/pref_service.h"
 #include "components/security_interstitials/content/captive_portal_blocking_page.h"
diff --git a/chrome/browser/captive_portal/captive_portal_login_detector.cc b/chrome/browser/captive_portal/captive_portal_login_detector.cc
index 5b2d13f..3a59f89b 100644
--- a/chrome/browser/captive_portal/captive_portal_login_detector.cc
+++ b/chrome/browser/captive_portal/captive_portal_login_detector.cc
@@ -5,7 +5,7 @@
 #include "chrome/browser/captive_portal/captive_portal_login_detector.h"
 
 #include "chrome/browser/captive_portal/captive_portal_service_factory.h"
-#include "components/captive_portal/captive_portal_types.h"
+#include "components/captive_portal/core/captive_portal_types.h"
 
 using captive_portal::CaptivePortalResult;
 
diff --git a/chrome/browser/captive_portal/captive_portal_login_detector.h b/chrome/browser/captive_portal/captive_portal_login_detector.h
index 16c280c..5003d327 100644
--- a/chrome/browser/captive_portal/captive_portal_login_detector.h
+++ b/chrome/browser/captive_portal/captive_portal_login_detector.h
@@ -6,7 +6,7 @@
 #define CHROME_BROWSER_CAPTIVE_PORTAL_CAPTIVE_PORTAL_LOGIN_DETECTOR_H_
 
 #include "base/macros.h"
-#include "chrome/browser/captive_portal/captive_portal_service.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 
 class Profile;
 
diff --git a/chrome/browser/captive_portal/captive_portal_service_factory.cc b/chrome/browser/captive_portal/captive_portal_service_factory.cc
index f4fada88..3d7254f2 100644
--- a/chrome/browser/captive_portal/captive_portal_service_factory.cc
+++ b/chrome/browser/captive_portal/captive_portal_service_factory.cc
@@ -4,9 +4,9 @@
 
 #include "chrome/browser/captive_portal/captive_portal_service_factory.h"
 
-#include "chrome/browser/captive_portal/captive_portal_service.h"
 #include "chrome/browser/profiles/incognito_helpers.h"
 #include "chrome/browser/profiles/profile.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 #include "components/keyed_service/content/browser_context_dependency_manager.h"
 
 // static
diff --git a/chrome/browser/captive_portal/captive_portal_service_unittest.cc b/chrome/browser/captive_portal/captive_portal_service_unittest.cc
index fe846391..e3fbe9b3 100644
--- a/chrome/browser/captive_portal/captive_portal_service_unittest.cc
+++ b/chrome/browser/captive_portal/captive_portal_service_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/captive_portal/captive_portal_service.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 
 #include "base/bind.h"
 #include "base/command_line.h"
@@ -10,11 +10,11 @@
 #include "base/run_loop.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/test/test_timeouts.h"
-#include "chrome/browser/captive_portal/captive_portal_service.h"
 #include "chrome/common/chrome_switches.h"
 #include "chrome/common/pref_names.h"
 #include "chrome/test/base/testing_profile.h"
-#include "components/captive_portal/captive_portal_testing_utils.h"
+#include "components/captive_portal/content/captive_portal_service.h"
+#include "components/captive_portal/core/captive_portal_testing_utils.h"
 #include "components/embedder_support/pref_names.h"
 #include "components/prefs/pref_service.h"
 #include "content/public/test/browser_task_environment.h"
diff --git a/chrome/browser/captive_portal/captive_portal_tab_helper.cc b/chrome/browser/captive_portal/captive_portal_tab_helper.cc
index e50faf31..35a50900 100644
--- a/chrome/browser/captive_portal/captive_portal_tab_helper.cc
+++ b/chrome/browser/captive_portal/captive_portal_tab_helper.cc
@@ -9,7 +9,6 @@
 #include "chrome/browser/captive_portal/captive_portal_login_detector.h"
 #include "chrome/browser/captive_portal/captive_portal_service_factory.h"
 #include "chrome/browser/captive_portal/captive_portal_tab_reloader.h"
-#include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/browser/ui/browser_finder.h"
@@ -17,10 +16,6 @@
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/navigation_handle.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/notification_types.h"
 #include "content/public/browser/render_frame_host.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/render_view_host.h"
@@ -42,10 +37,12 @@
                      web_contents,
                      false))),
       login_detector_(new CaptivePortalLoginDetector(profile_)),
-      is_captive_portal_window_(false) {
+      is_captive_portal_window_(false),
+      subscription_(
+          CaptivePortalServiceFactory::GetForProfile(profile_)
+              ->RegisterCallback(base::Bind(&CaptivePortalTabHelper::Observe,
+                                            base::Unretained(this)))) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  registrar_.Add(this, chrome::NOTIFICATION_CAPTIVE_PORTAL_CHECK_RESULT,
-                 content::Source<content::BrowserContext>(profile_));
 }
 
 CaptivePortalTabHelper::~CaptivePortalTabHelper() {
@@ -130,17 +127,10 @@
 }
 
 void CaptivePortalTabHelper::Observe(
-    int type,
-    const content::NotificationSource& source,
-    const content::NotificationDetails& details) {
+    const CaptivePortalService::Results& results) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-  DCHECK_EQ(chrome::NOTIFICATION_CAPTIVE_PORTAL_CHECK_RESULT, type);
-  DCHECK_EQ(profile_, content::Source<content::BrowserContext>(source).ptr());
 
-  const CaptivePortalService::Results* results =
-      content::Details<CaptivePortalService::Results>(details).ptr();
-
-  OnCaptivePortalResults(results->previous_result, results->result);
+  OnCaptivePortalResults(results.previous_result, results.result);
 }
 
 void CaptivePortalTabHelper::OnSSLCertError(const net::SSLInfo& ssl_info) {
diff --git a/chrome/browser/captive_portal/captive_portal_tab_helper.h b/chrome/browser/captive_portal/captive_portal_tab_helper.h
index d093241..0eac1ad 100644
--- a/chrome/browser/captive_portal/captive_portal_tab_helper.h
+++ b/chrome/browser/captive_portal/captive_portal_tab_helper.h
@@ -9,9 +9,7 @@
 
 #include "base/compiler_specific.h"
 #include "base/macros.h"
-#include "chrome/browser/captive_portal/captive_portal_service.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "content/public/browser/web_contents_user_data.h"
 #include "content/public/common/resource_type.h"
@@ -54,7 +52,6 @@
 // https://docs.google.com/document/d/1k-gP2sswzYNvryu9NcgN7q5XrsMlUdlUdoW9WRaEmfM/edit
 class CaptivePortalTabHelper
     : public content::WebContentsObserver,
-      public content::NotificationObserver,
       public content::WebContentsUserData<CaptivePortalTabHelper> {
  public:
   ~CaptivePortalTabHelper() override;
@@ -68,11 +65,6 @@
       content::NavigationHandle* navigation_handle) override;
   void DidStopLoading() override;
 
-  // content::NotificationObserver:
-  void Observe(int type,
-               const content::NotificationSource& source,
-               const content::NotificationDetails& details) override;
-
   // Called when a certificate interstitial error page is about to be shown.
   void OnSSLCertError(const net::SSLInfo& ssl_info);
 
@@ -94,6 +86,8 @@
   friend class content::WebContentsUserData<CaptivePortalTabHelper>;
   explicit CaptivePortalTabHelper(content::WebContents* web_contents);
 
+  void Observe(const CaptivePortalService::Results& results);
+
   // Called by Observe in response to the corresponding event.
   void OnCaptivePortalResults(
       captive_portal::CaptivePortalResult previous_result,
@@ -123,7 +117,7 @@
   // portal resolution.
   bool is_captive_portal_window_;
 
-  content::NotificationRegistrar registrar_;
+  std::unique_ptr<CaptivePortalService::Subscription> subscription_;
 
   WEB_CONTENTS_USER_DATA_KEY_DECL();
 
diff --git a/chrome/browser/captive_portal/captive_portal_tab_helper_unittest.cc b/chrome/browser/captive_portal/captive_portal_tab_helper_unittest.cc
index 9fbebfc..11e8be7 100644
--- a/chrome/browser/captive_portal/captive_portal_tab_helper_unittest.cc
+++ b/chrome/browser/captive_portal/captive_portal_tab_helper_unittest.cc
@@ -8,14 +8,10 @@
 
 #include "base/callback.h"
 #include "base/macros.h"
-#include "chrome/browser/captive_portal/captive_portal_service.h"
 #include "chrome/browser/captive_portal/captive_portal_tab_reloader.h"
 #include "chrome/browser/chrome_notification_types.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/notification_types.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/browser/render_view_host.h"
 #include "content/public/browser/web_contents.h"
@@ -152,12 +148,10 @@
     CaptivePortalService::Results results;
     results.previous_result = previous_result;
     results.result = result;
-    content::Details<CaptivePortalService::Results> details_results(&results);
 
     EXPECT_CALL(mock_reloader(), OnCaptivePortalResults(previous_result,
                                                         result)).Times(1);
-    tab_helper()->Observe(chrome::NOTIFICATION_CAPTIVE_PORTAL_CHECK_RESULT,
-                          source_profile, details_results);
+    tab_helper()->Observe(results);
   }
 
   MockCaptivePortalTabReloader& mock_reloader() { return *mock_reloader_; }
diff --git a/chrome/browser/captive_portal/captive_portal_tab_reloader.cc b/chrome/browser/captive_portal/captive_portal_tab_reloader.cc
index 2aa620e..8032d65 100644
--- a/chrome/browser/captive_portal/captive_portal_tab_reloader.cc
+++ b/chrome/browser/captive_portal/captive_portal_tab_reloader.cc
@@ -9,8 +9,8 @@
 #include "base/location.h"
 #include "base/single_thread_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
-#include "chrome/browser/captive_portal/captive_portal_service.h"
 #include "chrome/browser/captive_portal/captive_portal_service_factory.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 #include "content/public/browser/interstitial_page.h"
 #include "content/public/browser/navigation_controller.h"
 #include "content/public/browser/navigation_entry.h"
diff --git a/chrome/browser/captive_portal/captive_portal_tab_reloader.h b/chrome/browser/captive_portal/captive_portal_tab_reloader.h
index b1dcb0b8..0bccb51 100644
--- a/chrome/browser/captive_portal/captive_portal_tab_reloader.h
+++ b/chrome/browser/captive_portal/captive_portal_tab_reloader.h
@@ -11,7 +11,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/time/time.h"
 #include "base/timer/timer.h"
-#include "chrome/browser/captive_portal/captive_portal_service.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 
 class Profile;
 
diff --git a/chrome/browser/captive_portal/captive_portal_tab_reloader_unittest.cc b/chrome/browser/captive_portal/captive_portal_tab_reloader_unittest.cc
index 4e207c3f..025279a9 100644
--- a/chrome/browser/captive_portal/captive_portal_tab_reloader_unittest.cc
+++ b/chrome/browser/captive_portal/captive_portal_tab_reloader_unittest.cc
@@ -7,8 +7,8 @@
 #include "base/callback.h"
 #include "base/macros.h"
 #include "base/run_loop.h"
-#include "chrome/browser/captive_portal/captive_portal_service.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 #include "content/public/browser/interstitial_page.h"
 #include "content/public/browser/interstitial_page_delegate.h"
 #include "content/public/browser/web_contents.h"
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 754e542..bcdcff7 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -184,7 +184,7 @@
 #include "chrome/installer/util/google_update_settings.h"
 #include "components/autofill/core/common/autofill_switches.h"
 #include "components/browsing_data/core/browsing_data_utils.h"
-#include "components/captive_portal/buildflags.h"
+#include "components/captive_portal/core/buildflags.h"
 #include "components/cdm/browser/cdm_message_filter_android.h"
 #include "components/certificate_matching/certificate_principal_pattern.h"
 #include "components/cloud_devices/common/cloud_devices_switches.h"
@@ -666,6 +666,32 @@
 #endif  // defined(OS_WIN) && !defined(COMPONENT_BUILD) &&
         // !defined(ADDRESS_SANITIZER)
 
+// Wrapper for SSLErrorHandler::HandleSSLError() that supplies //chrome-level
+// parameters.
+void HandleSSLErrorWrapper(
+    content::WebContents* web_contents,
+    int cert_error,
+    const net::SSLInfo& ssl_info,
+    const GURL& request_url,
+    std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
+    SSLErrorHandler::BlockingPageReadyCallback blocking_page_ready_callback) {
+  Profile* profile =
+      Profile::FromBrowserContext(web_contents->GetBrowserContext());
+
+  // This can happen if GetBrowserContext no longer exists by the time this
+  // gets called (e.g. the SSL error was in a webview that has since been
+  // destroyed); if that's the case we don't need to handle the error (and will
+  // crash if we attempt to).
+  if (!profile)
+    return;
+
+  SSLErrorHandler::HandleSSLError(
+      web_contents, cert_error, ssl_info, request_url,
+      std::move(ssl_cert_reporter), std::move(blocking_page_ready_callback),
+      g_browser_process->network_time_tracker(),
+      profile->GetPrefs()->GetBoolean(prefs::kSSLErrorOverrideAllowed));
+}
+
 enum AppLoadedInTabSource {
   // A platform app page tried to load one of its own URLs in a tab.
   APP_LOADED_IN_TAB_SOURCE_APP = 0,
@@ -3933,9 +3959,7 @@
   throttles.push_back(std::make_unique<SSLErrorNavigationThrottle>(
       handle,
       std::make_unique<CertificateReportingServiceCertReporter>(web_contents),
-      g_browser_process->network_time_tracker(),
-      base::BindOnce(&SSLErrorHandler::HandleSSLError),
-      base::BindOnce(&IsInHostedApp)));
+      base::BindOnce(&HandleSSLErrorWrapper), base::BindOnce(&IsInHostedApp)));
 
   throttles.push_back(std::make_unique<LoginNavigationThrottle>(handle));
 
diff --git a/chrome/browser/chrome_content_browser_client_unittest.cc b/chrome/browser/chrome_content_browser_client_unittest.cc
index 3f9636ef..313ce94 100644
--- a/chrome/browser/chrome_content_browser_client_unittest.cc
+++ b/chrome/browser/chrome_content_browser_client_unittest.cc
@@ -24,7 +24,7 @@
 #include "chrome/common/webui_url_constants.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "chrome/test/base/testing_profile.h"
-#include "components/captive_portal/buildflags.h"
+#include "components/captive_portal/core/buildflags.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/search_engines/template_url_service.h"
 #include "components/variations/variations_associated_data.h"
diff --git a/chrome/browser/chrome_notification_types.h b/chrome/browser/chrome_notification_types.h
index 72e1af7..6518315e 100644
--- a/chrome/browser/chrome_notification_types.h
+++ b/chrome/browser/chrome_notification_types.h
@@ -197,15 +197,6 @@
   NOTIFICATION_TAB_DRAG_LOOP_DONE,
 #endif
 
-  // DEPRECATED: Instead of listening this notification, use
-  // CaptivePortalService::RegisterCallback().
-  // TODO(blundell): Delete this notification as part of
-  // https://crbug.com/1030692.
-  // Sent when the CaptivePortalService checks if we're behind a captive portal.
-  // The Source is the Profile the CaptivePortalService belongs to, and the
-  // Details are a Details<CaptivePortalService::CheckResults>.
-  NOTIFICATION_CAPTIVE_PORTAL_CHECK_RESULT,
-
   // Sent when the applications in the NTP app launcher have been reordered.
   // The details, if not NoDetails, is the std::string ID of the extension that
   // was moved.
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 764db10..4480c1a4 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -172,7 +172,7 @@
     "//components/arc/media_session",
     "//components/arc/mojom:mojom_traits",
     "//components/browser_sync",
-    "//components/captive_portal",
+    "//components/captive_portal/core",
     "//components/component_updater:crl_set_remover",
     "//components/consent_auditor:consent_auditor",
     "//components/constrained_window",
@@ -873,8 +873,6 @@
     "crostini/crostini_package_operation_status.h",
     "crostini/crostini_package_service.cc",
     "crostini/crostini_package_service.h",
-    "crostini/crostini_port_forwarder.cc",
-    "crostini/crostini_port_forwarder.h",
     "crostini/crostini_pref_names.cc",
     "crostini/crostini_pref_names.h",
     "crostini/crostini_registry_service.cc",
@@ -2715,7 +2713,6 @@
     "crostini/crostini_mime_types_service_unittest.cc",
     "crostini/crostini_package_notification_unittest.cc",
     "crostini/crostini_package_service_unittest.cc",
-    "crostini/crostini_port_forwarder_unittest.cc",
     "crostini/crostini_registry_service_unittest.cc",
     "crostini/crostini_reporting_util_unittest.cc",
     "crostini/crostini_unsupported_action_notifier_unittest.cc",
diff --git a/chrome/browser/chromeos/crostini/crostini_manager.cc b/chrome/browser/chromeos/crostini/crostini_manager.cc
index e2d2b6b..eae1f6e 100644
--- a/chrome/browser/chromeos/crostini/crostini_manager.cc
+++ b/chrome/browser/chromeos/crostini/crostini_manager.cc
@@ -430,7 +430,7 @@
       return;
     }
     if (!success) {
-      FinishRestart(CrostiniResult::CONTAINER_START_FAILED);
+      FinishRestart(CrostiniResult::CONTAINER_SETUP_FAILED);
       return;
     }
 
@@ -2474,7 +2474,7 @@
     base::Optional<vm_tools::cicerone::CreateLxdContainerResponse> response) {
   if (!response) {
     LOG(ERROR) << "Failed to create lxd container in vm. Empty response.";
-    std::move(callback).Run(CrostiniResult::CONTAINER_START_FAILED);
+    std::move(callback).Run(CrostiniResult::CONTAINER_CREATE_FAILED);
     return;
   }
 
@@ -2492,7 +2492,7 @@
   if (response->status() !=
       vm_tools::cicerone::CreateLxdContainerResponse::EXISTS) {
     LOG(ERROR) << "Failed to start container: " << response->failure_reason();
-    std::move(callback).Run(CrostiniResult::CONTAINER_START_FAILED);
+    std::move(callback).Run(CrostiniResult::CONTAINER_CREATE_FAILED);
     return;
   }
   std::move(callback).Run(CrostiniResult::SUCCESS);
diff --git a/chrome/browser/chromeos/crostini/crostini_port_forwarder.cc b/chrome/browser/chromeos/crostini/crostini_port_forwarder.cc
deleted file mode 100644
index 6b9c79a..0000000
--- a/chrome/browser/chromeos/crostini/crostini_port_forwarder.cc
+++ /dev/null
@@ -1,181 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <fcntl.h>
-
-#include "chrome/browser/chromeos/crostini/crostini_port_forwarder.h"
-
-#include "base/bind.h"
-#include "base/no_destructor.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chromeos/dbus/permission_broker/permission_broker_client.h"
-#include "components/keyed_service/content/browser_context_dependency_manager.h"
-#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
-
-namespace crostini {
-
-// Currently, we are not supporting ethernet/mlan/usb port forwarding.
-constexpr char kDefaultInterfaceToForward[] = "wlan0";
-
-class CrostiniPortForwarderFactory : public BrowserContextKeyedServiceFactory {
- public:
-  static CrostiniPortForwarder* GetForProfile(Profile* profile) {
-    return static_cast<CrostiniPortForwarder*>(
-        GetInstance()->GetServiceForBrowserContext(profile, true));
-  }
-
-  static CrostiniPortForwarderFactory* GetInstance() {
-    static base::NoDestructor<CrostiniPortForwarderFactory> factory;
-    return factory.get();
-  }
-
- private:
-  friend class base::NoDestructor<CrostiniPortForwarderFactory>;
-
-  CrostiniPortForwarderFactory()
-      : BrowserContextKeyedServiceFactory(
-            "CrostiniPortForwarderService",
-            BrowserContextDependencyManager::GetInstance()) {}
-
-  ~CrostiniPortForwarderFactory() override = default;
-
-  // BrowserContextKeyedServiceFactory:
-  KeyedService* BuildServiceInstanceFor(
-      content::BrowserContext* context) const override {
-    Profile* profile = Profile::FromBrowserContext(context);
-    return new CrostiniPortForwarder(profile);
-  }
-};
-
-CrostiniPortForwarder* CrostiniPortForwarder::GetForProfile(Profile* profile) {
-  return CrostiniPortForwarderFactory::GetForProfile(profile);
-}
-
-CrostiniPortForwarder::CrostiniPortForwarder(Profile* profile)
-    : profile_(profile) {
-  // TODO(matterchen): Profile will be used later, this is to remove warnings.
-  (void)profile_;
-}
-
-CrostiniPortForwarder::~CrostiniPortForwarder() = default;
-
-void CrostiniPortForwarder::OnActivatePortCompleted(
-    ResultCallback result_callback,
-    const PortRuleKey& key,
-    bool success) {
-  if (!success) {
-    forwarded_ports_.erase(key);
-    LOG(ERROR) << "Failed to activate port, port preference not added: "
-               << key.port_number;
-    std::move(result_callback).Run(success);
-    return;
-  }
-  // TODO(matterchen): Update current port forwarding preference.
-  std::move(result_callback).Run(success);
-}
-
-void CrostiniPortForwarder::OnAddPortCompleted(ResultCallback result_callback,
-                                               const std::string& label,
-                                               const PortRuleKey& key,
-                                               bool success) {
-  if (!success) {
-    forwarded_ports_.erase(key);
-    LOG(ERROR) << "Failed to activate port, port preference not added: "
-               << key.port_number;
-    std::move(result_callback).Run(success);
-    return;
-  }
-  // TODO(matterchen): Add new port forwarding preference.
-  std::move(result_callback).Run(success);
-}
-
-void CrostiniPortForwarder::TryActivatePort(
-    uint16_t port_number,
-    const Protocol& protocol_type,
-    const std::string& ipv4_addr,
-    chromeos::PermissionBrokerClient::ResultCallback result_callback) {
-  chromeos::PermissionBrokerClient* client =
-      chromeos::PermissionBrokerClient::Get();
-  if (!client) {
-    LOG(ERROR) << "Could not get permission broker client.";
-    std::move(result_callback).Run(false);
-    return;
-  }
-
-  int lifeline[2] = {-1, -1};
-  if (pipe(lifeline) < 0) {
-    LOG(ERROR) << "Failed to create a lifeline pipe";
-    std::move(result_callback).Run(false);
-    return;
-  }
-
-  PortRuleKey port_key = {
-      .port_number = port_number,
-      .protocol_type = protocol_type,
-      .input_ifname = kDefaultInterfaceToForward,
-  };
-
-  base::ScopedFD lifeline_local(lifeline[0]);
-  base::ScopedFD lifeline_remote(lifeline[1]);
-
-  forwarded_ports_[port_key] = std::move(lifeline_local);
-
-  if (Protocol::TCP == protocol_type) {
-    client->RequestTcpPortForward(
-        port_number, kDefaultInterfaceToForward, ipv4_addr, port_number,
-        std::move(lifeline_remote.get()), std::move(result_callback));
-  } else if (Protocol::UDP == protocol_type) {
-    client->RequestUdpPortForward(
-        port_number, kDefaultInterfaceToForward, ipv4_addr, port_number,
-        std::move(lifeline_remote.get()), std::move(result_callback));
-  }
-}
-
-void CrostiniPortForwarder::AddPort(uint16_t port_number,
-                                    const Protocol& protocol_type,
-                                    const std::string& label,
-                                    ResultCallback result_callback) {
-  PortRuleKey new_port_key = {
-      .port_number = port_number,
-      .protocol_type = protocol_type,
-      .input_ifname = kDefaultInterfaceToForward,
-  };
-
-  if (forwarded_ports_.find(new_port_key) != forwarded_ports_.end()) {
-    LOG(ERROR) << "Trying to add an already forwarded port.";
-    std::move(result_callback).Run(false);
-    return;
-  }
-
-  base::OnceCallback<void(bool)> on_add_port_completed =
-      base::BindOnce(&CrostiniPortForwarder::OnAddPortCompleted,
-                     weak_ptr_factory_.GetWeakPtr(), std::move(result_callback),
-                     label, new_port_key);
-
-  // TODO(matterchen): Extract container IPv4 address.
-  TryActivatePort(port_number, protocol_type, "PLACEHOLDER_IP_ADDRESS",
-                  std::move(on_add_port_completed));
-}
-
-void CrostiniPortForwarder::ActivatePort(uint16_t port_number,
-                                         ResultCallback result_callback) {
-  // TODO(matterchen): Find the current port setting from profile preferences.
-  PortRuleKey existing_port_key = {
-      .port_number = port_number,
-      .protocol_type = Protocol::TCP,
-      .input_ifname = kDefaultInterfaceToForward,
-  };
-
-  base::OnceCallback<void(bool)> on_activate_port_completed =
-      base::BindOnce(&CrostiniPortForwarder::OnActivatePortCompleted,
-                     weak_ptr_factory_.GetWeakPtr(), std::move(result_callback),
-                     existing_port_key);
-
-  // TODO(matterchen): Extract container IPv4 address.
-  CrostiniPortForwarder::TryActivatePort(port_number, Protocol::TCP,
-                                         "PLACEHOLDER_IP_ADDRESS",
-                                         std::move(on_activate_port_completed));
-}
-
-}  // namespace crostini
diff --git a/chrome/browser/chromeos/crostini/crostini_port_forwarder.h b/chrome/browser/chromeos/crostini/crostini_port_forwarder.h
deleted file mode 100644
index 9ee3617..0000000
--- a/chrome/browser/chromeos/crostini/crostini_port_forwarder.h
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_CHROMEOS_CROSTINI_CROSTINI_PORT_FORWARDER_H_
-#define CHROME_BROWSER_CHROMEOS_CROSTINI_CROSTINI_PORT_FORWARDER_H_
-
-#include <string>
-
-#include "base/files/scoped_file.h"
-#include "base/memory/weak_ptr.h"
-#include "base/values.h"
-#include "components/keyed_service/core/keyed_service.h"
-
-class Profile;
-
-namespace crostini {
-
-class CrostiniPortForwarder : public KeyedService {
- public:
-  enum class Protocol {
-    TCP,
-    UDP,
-  };
-
-  struct PortRuleKey {
-    uint16_t port_number;
-    const Protocol& protocol_type;
-    std::string input_ifname;
-
-    bool operator==(const PortRuleKey& other) const {
-      return port_number == other.port_number &&
-             protocol_type == other.protocol_type &&
-             input_ifname == other.input_ifname;
-    }
-  };
-
-  // Helper for using PortRuleKey as key entries in std::unordered_maps.
-  struct PortRuleKeyHasher {
-    std::size_t operator()(const PortRuleKey& k) const {
-      return ((std::hash<uint16_t>()(k.port_number) ^
-               (std::hash<Protocol>()(k.protocol_type) << 1)) >>
-              1) ^
-             (std::hash<std::string>()(k.input_ifname) << 1);
-    }
-  };
-
-  using ResultCallback = base::OnceCallback<void(bool)>;
-  void ActivatePort(uint16_t port_number, ResultCallback result_callback);
-  void AddPort(uint16_t port_number,
-               const Protocol& protocol_type,
-               const std::string& label,
-               ResultCallback result_callback);
-
-  static CrostiniPortForwarder* GetForProfile(Profile* profile);
-
-  explicit CrostiniPortForwarder(Profile* profile);
-  ~CrostiniPortForwarder() override;
-
- private:
-  FRIEND_TEST_ALL_PREFIXES(CrostiniPortForwarderTest, AddPortDuplicateFail);
-  FRIEND_TEST_ALL_PREFIXES(CrostiniPortForwarderTest, AddPortMultipleSuccess);
-  FRIEND_TEST_ALL_PREFIXES(CrostiniPortForwarderTest, AddPortUdpAndTcpSuccess);
-  FRIEND_TEST_ALL_PREFIXES(CrostiniPortForwarderTest,
-                           TryActivatePortPermissionBrokerClientFail);
-  void OnActivatePortCompleted(ResultCallback result_callback,
-                               const PortRuleKey& key,
-                               bool success);
-  void OnAddPortCompleted(ResultCallback result_callback,
-                          const std::string& label,
-                          const PortRuleKey& key,
-                          bool success);
-  void TryActivatePort(uint16_t port_number,
-                       const Protocol& protocol_type,
-                       const std::string& ipv4_addr,
-                       base::OnceCallback<void(bool)> result_callback);
-
-  // For each port rule (protocol, port, interface), keep track of the fd which
-  // requested it so we can release it on removal / deactivate.
-  std::unordered_map<PortRuleKey, base::ScopedFD, PortRuleKeyHasher>
-      forwarded_ports_;
-
-  Profile* profile_;
-
-  base::WeakPtrFactory<CrostiniPortForwarder> weak_ptr_factory_{this};
-
-  DISALLOW_COPY_AND_ASSIGN(CrostiniPortForwarder);
-
-};  // class
-
-}  // namespace crostini
-
-#endif  // CHROME_BROWSER_CHROMEOS_CROSTINI_CROSTINI_PORT_FORWARDER_H_
diff --git a/chrome/browser/chromeos/crostini/crostini_port_forwarder_unittest.cc b/chrome/browser/chromeos/crostini/crostini_port_forwarder_unittest.cc
deleted file mode 100644
index b10fc1e..0000000
--- a/chrome/browser/chromeos/crostini/crostini_port_forwarder_unittest.cc
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/chromeos/crostini/crostini_port_forwarder.h"
-
-#include "chrome/browser/chromeos/crostini/crostini_test_helper.h"
-#include "chrome/test/base/testing_profile.h"
-#include "chromeos/dbus/permission_broker/fake_permission_broker_client.h"
-#include "content/public/test/browser_task_environment.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using testing::Mock;
-using testing::Return;
-
-void TestingCallback(bool* out, bool in) {
-  *out = in;
-}
-
-namespace crostini {
-
-class CrostiniPortForwarderTest : public testing::Test {
- public:
-  CrostiniPortForwarderTest() {}
-
-  ~CrostiniPortForwarderTest() override {}
-
-  void SetUp() override {
-    chromeos::PermissionBrokerClient::InitializeFake();
-    profile_ = std::make_unique<TestingProfile>();
-    test_helper_ = std::make_unique<CrostiniTestHelper>(profile_.get());
-    crostini_port_forwarder_ =
-        std::make_unique<CrostiniPortForwarder>(profile());
-  }
-
-  void TearDown() override {
-    chromeos::PermissionBrokerClient::Shutdown();
-    crostini_port_forwarder_.reset();
-    test_helper_.reset();
-    profile_.reset();
-  }
-
- protected:
-  Profile* profile() { return profile_.get(); }
-
-  std::unique_ptr<CrostiniTestHelper> test_helper_;
-  std::unique_ptr<TestingProfile> profile_;
-  std::unique_ptr<CrostiniPortForwarder> crostini_port_forwarder_;
-  content::BrowserTaskEnvironment task_environment_;
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(CrostiniPortForwarderTest);
-};
-
-TEST_F(CrostiniPortForwarderTest, AddPortTcpSuccess) {
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasTcpPortForward(
-      5000, "wlan0"));
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasUdpPortForward(
-      5000, "wlan0"));
-
-  bool success = false;
-  crostini_port_forwarder_->AddPort(5000, CrostiniPortForwarder::Protocol::TCP,
-                                    "label0",
-                                    base::BindOnce(&TestingCallback, &success));
-  EXPECT_TRUE(success);
-  EXPECT_TRUE(chromeos::FakePermissionBrokerClient::Get()->HasTcpPortForward(
-      5000, "wlan0"));
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasUdpPortForward(
-      5000, "wlan0"));
-}
-
-TEST_F(CrostiniPortForwarderTest, AddPortUdpSuccess) {
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasTcpPortForward(
-      5000, "wlan0"));
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasUdpPortForward(
-      5000, "wlan0"));
-
-  bool success = false;
-  crostini_port_forwarder_->AddPort(5000, CrostiniPortForwarder::Protocol::UDP,
-                                    "label0",
-                                    base::BindOnce(&TestingCallback, &success));
-  EXPECT_TRUE(success);
-  EXPECT_TRUE(chromeos::FakePermissionBrokerClient::Get()->HasUdpPortForward(
-      5000, "wlan0"));
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasTcpPortForward(
-      5000, "wlan0"));
-}
-
-TEST_F(CrostiniPortForwarderTest, AddPortDuplicateFail) {
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasTcpPortForward(
-      5000, "wlan0"));
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasUdpPortForward(
-      5000, "wlan0"));
-
-  bool success = false;
-  crostini_port_forwarder_->AddPort(5000, CrostiniPortForwarder::Protocol::UDP,
-                                    "label0",
-                                    base::BindOnce(&TestingCallback, &success));
-  EXPECT_TRUE(success);
-  EXPECT_TRUE(chromeos::FakePermissionBrokerClient::Get()->HasUdpPortForward(
-      5000, "wlan0"));
-  EXPECT_EQ(crostini_port_forwarder_->forwarded_ports_.size(), 1U);
-
-  // Leave success as == true.
-  crostini_port_forwarder_->AddPort(5000, CrostiniPortForwarder::Protocol::UDP,
-                                    "label1",
-                                    base::BindOnce(&TestingCallback, &success));
-  EXPECT_FALSE(success);
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasTcpPortForward(
-      5000, "wlan0"));
-  EXPECT_TRUE(chromeos::FakePermissionBrokerClient::Get()->HasUdpPortForward(
-      5000, "wlan0"));
-  EXPECT_EQ(crostini_port_forwarder_->forwarded_ports_.size(), 1U);
-}
-
-TEST_F(CrostiniPortForwarderTest, AddPortUdpAndTcpSuccess) {
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasTcpPortForward(
-      5000, "wlan0"));
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasUdpPortForward(
-      5000, "wlan0"));
-
-  bool success = false;
-  crostini_port_forwarder_->AddPort(5000, CrostiniPortForwarder::Protocol::UDP,
-                                    "label0",
-                                    base::BindOnce(&TestingCallback, &success));
-  EXPECT_TRUE(success);
-
-  success = false;
-  crostini_port_forwarder_->AddPort(5000, CrostiniPortForwarder::Protocol::TCP,
-                                    "label0",
-                                    base::BindOnce(&TestingCallback, &success));
-  EXPECT_TRUE(success);
-  EXPECT_EQ(crostini_port_forwarder_->forwarded_ports_.size(), 2U);
-}
-
-TEST_F(CrostiniPortForwarderTest, AddPortMultipleSuccess) {
-  EXPECT_EQ(crostini_port_forwarder_->forwarded_ports_.size(), 0U);
-  crostini_port_forwarder_->AddPort(5000, CrostiniPortForwarder::Protocol::UDP,
-                                    "label0", base::DoNothing());
-  crostini_port_forwarder_->AddPort(5001, CrostiniPortForwarder::Protocol::TCP,
-                                    "label1", base::DoNothing());
-  crostini_port_forwarder_->AddPort(5002, CrostiniPortForwarder::Protocol::UDP,
-                                    "label2", base::DoNothing());
-  EXPECT_EQ(crostini_port_forwarder_->forwarded_ports_.size(), 3U);
-}
-
-TEST_F(CrostiniPortForwarderTest, ActivatePortTcpSuccess) {
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasTcpPortForward(
-      5000, "wlan0"));
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasUdpPortForward(
-      5000, "wlan0"));
-
-  bool success = false;
-  crostini_port_forwarder_->ActivatePort(
-      5000, base::BindOnce(&TestingCallback, &success));
-  EXPECT_TRUE(success);
-  EXPECT_TRUE(chromeos::FakePermissionBrokerClient::Get()->HasTcpPortForward(
-      5000, "wlan0"));
-  EXPECT_FALSE(chromeos::FakePermissionBrokerClient::Get()->HasUdpPortForward(
-      5000, "wlan0"));
-}
-
-TEST_F(CrostiniPortForwarderTest, TryActivatePortPermissionBrokerClientFail) {
-  bool success = false;
-  crostini_port_forwarder_->TryActivatePort(
-      5000, CrostiniPortForwarder::Protocol::TCP, "label0",
-      base::BindOnce(&TestingCallback, &success));
-  EXPECT_TRUE(success);
-  EXPECT_EQ(crostini_port_forwarder_->forwarded_ports_.size(), 1U);
-  chromeos::PermissionBrokerClient::Shutdown();
-
-  // Leave success as == true.
-  crostini_port_forwarder_->TryActivatePort(
-      5001, CrostiniPortForwarder::Protocol::TCP, "label1",
-      base::BindOnce(&TestingCallback, &success));
-  EXPECT_FALSE(success);
-  EXPECT_EQ(crostini_port_forwarder_->forwarded_ports_.size(), 1U);
-  // Re-initialize otherwise Shutdown in TearDown phase will break.
-  chromeos::PermissionBrokerClient::InitializeFake();
-}
-
-}  // namespace crostini
diff --git a/chrome/browser/chromeos/crostini/crostini_simple_types.h b/chrome/browser/chromeos/crostini/crostini_simple_types.h
index fd90021..c4fc5d8 100644
--- a/chrome/browser/chromeos/crostini/crostini_simple_types.h
+++ b/chrome/browser/chromeos/crostini/crostini_simple_types.h
@@ -73,7 +73,8 @@
   CONTAINER_CONFIGURATION_FAILED = 47,
   LOAD_COMPONENT_UPDATE_IN_PROGRESS = 48,
   NEVER_FINISHED = 49,
-  kMaxValue = NEVER_FINISHED,
+  CONTAINER_SETUP_FAILED = 50,
+  kMaxValue = CONTAINER_SETUP_FAILED,
 };
 
 enum class InstallLinuxPackageProgressStatus {
diff --git a/chrome/browser/chromeos/extensions/printing/printing_api_handler.cc b/chrome/browser/chromeos/extensions/printing/printing_api_handler.cc
index 497162f2..cdefb40 100644
--- a/chrome/browser/chromeos/extensions/printing/printing_api_handler.cc
+++ b/chrome/browser/chromeos/extensions/printing/printing_api_handler.cc
@@ -23,6 +23,7 @@
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/common/pref_names.h"
 #include "chromeos/printing/printer_configuration.h"
+#include "components/prefs/pref_registry_simple.h"
 #include "components/prefs/pref_service.h"
 #include "components/printing/common/cloud_print_cdd_conversion.h"
 #include "content/public/browser/browser_context.h"
@@ -104,6 +105,11 @@
       browser_context);
 }
 
+// static
+void PrintingAPIHandler::RegisterProfilePrefs(PrefRegistrySimple* registry) {
+  registry->RegisterListPref(prefs::kPrintingAPIExtensionsWhitelist);
+}
+
 void PrintingAPIHandler::SubmitJob(
     const std::string& extension_id,
     std::unique_ptr<api::printing::SubmitJob::Params> params,
diff --git a/chrome/browser/chromeos/extensions/printing/printing_api_handler.h b/chrome/browser/chromeos/extensions/printing/printing_api_handler.h
index 911cd77..17b893a6 100644
--- a/chrome/browser/chromeos/extensions/printing/printing_api_handler.h
+++ b/chrome/browser/chromeos/extensions/printing/printing_api_handler.h
@@ -25,6 +25,8 @@
 #include "extensions/browser/event_router_factory.h"
 #include "mojo/public/cpp/bindings/remote.h"
 
+class PrefRegistrySimple;
+
 namespace chromeos {
 class CupsWrapper;
 class Printer;
@@ -78,6 +80,9 @@
   // Returns the current instance for |browser_context|.
   static PrintingAPIHandler* Get(content::BrowserContext* browser_context);
 
+  // Register the printing API preference with the |registry|.
+  static void RegisterProfilePrefs(PrefRegistrySimple* registry);
+
   void SubmitJob(const std::string& extension_id,
                  std::unique_ptr<api::printing::SubmitJob::Params> params,
                  PrintJobSubmitter::SubmitJobCallback callback);
diff --git a/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc b/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc
index f01f3da..91b5572 100644
--- a/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc
+++ b/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc
@@ -442,6 +442,7 @@
         TestCase("openQuickViewAndEscape"),
         TestCase("openQuickView").InGuestMode(),
         TestCase("openQuickView").TabletMode(),
+        TestCase("openQuickViewViaContextMenuSingleSelection"),
         TestCase("openQuickViewAudio"),
         TestCase("openQuickViewAudioWithImageMetadata"),
         TestCase("openQuickViewImage"),
diff --git a/chrome/browser/chromeos/login/ui/captive_portal_view.cc b/chrome/browser/chromeos/login/ui/captive_portal_view.cc
index 8375856..64b41b8 100644
--- a/chrome/browser/chromeos/login/ui/captive_portal_view.cc
+++ b/chrome/browser/chromeos/login/ui/captive_portal_view.cc
@@ -10,7 +10,7 @@
 #include "chromeos/network/network_handler.h"
 #include "chromeos/network/network_state.h"
 #include "chromeos/network/network_state_handler.h"
-#include "components/captive_portal/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
 #include "content/public/browser/web_contents.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "url/gurl.h"
diff --git a/chrome/browser/chromeos/login/ui/login_web_dialog.cc b/chrome/browser/chromeos/login/ui/login_web_dialog.cc
index e81e41a..cf91edc 100644
--- a/chrome/browser/chromeos/login/ui/login_web_dialog.cc
+++ b/chrome/browser/chromeos/login/ui/login_web_dialog.cc
@@ -60,6 +60,8 @@
     parent_window_ =
         chromeos::LoginDisplayHost::default_host()->GetNativeWindow();
   }
+  LOG_IF(WARNING, !parent_window)
+      << "No parent window. Dialog sizes could be wrong";
 }
 
 LoginWebDialog::~LoginWebDialog() {}
diff --git a/chrome/browser/chromeos/net/network_portal_detector_impl.h b/chrome/browser/chromeos/net/network_portal_detector_impl.h
index 11383b0..7bf24fb 100644
--- a/chrome/browser/chromeos/net/network_portal_detector_impl.h
+++ b/chrome/browser/chromeos/net/network_portal_detector_impl.h
@@ -21,8 +21,8 @@
 #include "chromeos/network/network_state_handler_observer.h"
 #include "chromeos/network/portal_detector/network_portal_detector.h"
 #include "chromeos/network/portal_detector/network_portal_detector_strategy.h"
-#include "components/captive_portal/captive_portal_detector.h"
-#include "components/captive_portal/captive_portal_types.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_types.h"
 #include "content/public/browser/notification_observer.h"
 #include "content/public/browser/notification_registrar.h"
 #include "net/url_request/url_fetcher.h"
diff --git a/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc b/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc
index cae9121..e0f9af8 100644
--- a/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc
+++ b/chrome/browser/chromeos/net/network_portal_detector_impl_browsertest.cc
@@ -29,7 +29,7 @@
 #include "chromeos/network/portal_detector/network_portal_detector.h"
 #include "chromeos/network/portal_detector/network_portal_detector_strategy.h"
 #include "components/account_id/account_id.h"
-#include "components/captive_portal/captive_portal_testing_utils.h"
+#include "components/captive_portal/core/captive_portal_testing_utils.h"
 #include "components/prefs/pref_service.h"
 #include "components/sync_preferences/pref_service_syncable.h"
 #include "content/public/test/test_utils.h"
diff --git a/chrome/browser/chromeos/net/network_portal_detector_impl_unittest.cc b/chrome/browser/chromeos/net/network_portal_detector_impl_unittest.cc
index c23b1c1b..a026444b 100644
--- a/chrome/browser/chromeos/net/network_portal_detector_impl_unittest.cc
+++ b/chrome/browser/chromeos/net/network_portal_detector_impl_unittest.cc
@@ -32,8 +32,8 @@
 #include "chromeos/network/network_state.h"
 #include "chromeos/network/network_state_handler.h"
 #include "chromeos/network/portal_detector/network_portal_detector_strategy.h"
-#include "components/captive_portal/captive_portal_detector.h"
-#include "components/captive_portal/captive_portal_testing_utils.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_testing_utils.h"
 #include "components/user_manager/scoped_user_manager.h"
 #include "components/user_manager/user_manager.h"
 #include "content/public/test/browser_task_environment.h"
diff --git a/chrome/browser/chromeos/net/network_portal_web_dialog.cc b/chrome/browser/chromeos/net/network_portal_web_dialog.cc
index eae18c0..37cb43b 100644
--- a/chrome/browser/chromeos/net/network_portal_web_dialog.cc
+++ b/chrome/browser/chromeos/net/network_portal_web_dialog.cc
@@ -4,7 +4,7 @@
 
 #include "chrome/browser/chromeos/net/network_portal_web_dialog.h"
 
-#include "components/captive_portal/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
 #include "components/strings/grit/components_strings.h"
 #include "ui/base/l10n/l10n_util.h"
 #include "ui/base/ui_base_types.h"
diff --git a/chrome/browser/extensions/api/management/management_browsertest.cc b/chrome/browser/extensions/api/management/management_browsertest.cc
index b2350057..07d896e0 100644
--- a/chrome/browser/extensions/api/management/management_browsertest.cc
+++ b/chrome/browser/extensions/api/management/management_browsertest.cc
@@ -767,6 +767,8 @@
 #define MAYBE_PolicyOverridesUserInstall PolicyOverridesUserInstall
 #endif
 
+// Tests the behavior of force-installing extensions that the user has already
+// installed.
 IN_PROC_BROWSER_TEST_F(ExtensionManagementTest,
                        MAYBE_PolicyOverridesUserInstall) {
   extensions::ExtensionService* service =
@@ -829,7 +831,6 @@
                nullptr);
   extensions::TestExtensionRegistryObserver install_observer(registry);
   UpdateProviderPolicy(policies);
-  install_observer.WaitForExtensionWillBeInstalled();
 
   ASSERT_EQ(size_before + 1, registry->enabled_extensions().size());
   extension = registry->enabled_extensions().GetByID(kExtensionId);
@@ -872,7 +873,6 @@
 
   extensions::TestExtensionRegistryObserver extension_observer(registry);
   UpdateProviderPolicy(policies);
-  extension_observer.WaitForExtensionWillBeInstalled();
 
   ASSERT_EQ(size_before + 1, registry->enabled_extensions().size());
   extension = registry->enabled_extensions().GetByID(kExtensionId);
diff --git a/chrome/browser/extensions/api/networking_config_chromeos_apitest_chromeos.cc b/chrome/browser/extensions/api/networking_config_chromeos_apitest_chromeos.cc
index c27a9c4..3298496 100644
--- a/chrome/browser/extensions/api/networking_config_chromeos_apitest_chromeos.cc
+++ b/chrome/browser/extensions/api/networking_config_chromeos_apitest_chromeos.cc
@@ -20,7 +20,7 @@
 #include "chromeos/dbus/shill/shill_device_client.h"
 #include "chromeos/dbus/shill/shill_profile_client.h"
 #include "chromeos/dbus/shill/shill_service_client.h"
-#include "components/captive_portal/captive_portal_testing_utils.h"
+#include "components/captive_portal/core/captive_portal_testing_utils.h"
 #include "content/public/test/test_utils.h"
 #include "extensions/test/result_catcher.h"
 #include "net/base/net_errors.h"
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index e730613..0f86e08d 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -227,6 +227,47 @@
           InstallationReporter::FailureReason::ALREADY_INSTALLED);
       return false;
     }
+    // If the installation is requested from a higher priority source, update
+    // its install location.
+    if (current !=
+        Manifest::GetHigherPriorityLocation(current, info.download_location)) {
+      UnloadExtension(info.extension_id, UnloadedExtensionReason::UPDATE);
+
+      // Fetch the installation info from the prefs, and reload the extension
+      // with a modified install location.
+      std::unique_ptr<ExtensionInfo> installed_extension(
+          extension_prefs_->GetInstalledExtensionInfo(info.extension_id));
+      installed_extension->extension_location = info.download_location;
+
+      // Load the extension with the new install location
+      InstalledLoader(this).Load(*installed_extension, false);
+      // Update the install location in the prefs.
+      extension_prefs_->SetInstallLocation(info.extension_id,
+                                           info.download_location);
+
+      // If the extension was disabled by user or was disabled due to
+      // a permissions increase, and it must remain enabled, remove those
+      // disable reasons.
+      if (registry_->disabled_extensions().GetByID(info.extension_id) &&
+          system_->management_policy()->MustRemainEnabled(
+              registry_->GetExtensionById(info.extension_id,
+                                          ExtensionRegistry::EVERYTHING),
+              nullptr)) {
+        int disable_reasons =
+            extension_prefs_->GetDisableReasons(extension->id());
+        disable_reasons &= (~(disable_reason::DISABLE_USER_ACTION |
+                              disable_reason::DISABLE_PERMISSIONS_INCREASE));
+        extension_prefs_->ReplaceDisableReasons(info.extension_id,
+                                                disable_reasons);
+
+        // Only re-enable the extension if there are no other disable reasons.
+        if (extension_prefs_->GetDisableReasons(info.extension_id) ==
+            disable_reason::DISABLE_NONE) {
+          EnableExtension(info.extension_id);
+        }
+      }
+      return false;
+    }
     // Otherwise, overwrite the current installation.
   }
 
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 71cbc39..e3ce70a4 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -6162,23 +6162,22 @@
   EXPECT_FALSE(service()->OnExternalExtensionUpdateUrlFound(info, true));
   EXPECT_FALSE(pending->IsIdPending(kGoodId));
 
-  // Install when the location has higher priority.
+  // Update the download location when install is requested from higher priority
+  // location.
   info.download_location = Manifest::EXTERNAL_POLICY_DOWNLOAD;
-  EXPECT_TRUE(service()->OnExternalExtensionUpdateUrlFound(info, true));
-  EXPECT_TRUE(pending->IsIdPending(kGoodId));
+  EXPECT_FALSE(service()->OnExternalExtensionUpdateUrlFound(info, true));
+  EXPECT_FALSE(pending->IsIdPending(kGoodId));
 
   // Try the low priority again.  Should be rejected.
   info.download_location = Manifest::EXTERNAL_PREF_DOWNLOAD;
   EXPECT_FALSE(service()->OnExternalExtensionUpdateUrlFound(info, true));
   // The existing record should still be present in the pending extension
   // manager.
-  EXPECT_TRUE(pending->IsIdPending(kGoodId));
-
-  pending->Remove(kGoodId);
+  EXPECT_FALSE(pending->IsIdPending(kGoodId));
 
   // Skip install when the location has the same priority as the installed
   // location.
-  info.download_location = Manifest::INTERNAL;
+  info.download_location = Manifest::EXTERNAL_POLICY_DOWNLOAD;
   EXPECT_FALSE(service()->OnExternalExtensionUpdateUrlFound(info, true));
 
   EXPECT_FALSE(pending->IsIdPending(kGoodId));
@@ -7511,6 +7510,71 @@
   EXPECT_FALSE(prefs->IsExtensionDisabled(good_crx));
 }
 
+// If the extension is first manually installed by the user, and then added to
+// the force installed list, on restarting, the extension should behave as a
+// force installed extension.
+TEST_F(ExtensionServiceTest,
+       UserInstalledExtensionThenRequiredByPolicyOnRestart) {
+  InitializeEmptyExtensionServiceWithTestingPrefs();
+
+  // Install an extension as if the user did it.
+  base::FilePath path = data_dir().AppendASCII("good.crx");
+  const Extension* extension = InstallCRX(path, INSTALL_NEW);
+  ASSERT_TRUE(extension);
+  EXPECT_EQ(good_crx, extension->id());
+  EXPECT_EQ(Manifest::INTERNAL, extension->location());
+
+  std::string kVersionStr = "1.0.0.0";
+  EXPECT_EQ(kVersionStr, extension->VersionString());
+
+  {
+    ManagementPrefUpdater pref(profile_->GetTestingPrefService());
+    // Mark good.crx for force-installation.
+    pref.SetIndividualExtensionAutoInstalled(
+        good_crx, "http://example.com/update_url", true);
+  }
+
+  ExtensionManagement* management =
+      ExtensionManagementFactory::GetForBrowserContext(profile());
+  ExtensionManagement::InstallationMode installation_mode =
+      management->GetInstallationMode(extension);
+  EXPECT_EQ(ExtensionManagement::INSTALLATION_FORCED, installation_mode);
+
+  GURL good_update_url(kGoodUpdateURL);
+  ExternalInstallInfoUpdateUrl info(
+      good_crx, std::string(), std::move(good_update_url),
+      Manifest::EXTERNAL_POLICY_DOWNLOAD, Extension::NO_FLAGS, false);
+  service()->OnExternalExtensionUpdateUrlFound(info, true);
+  base::RunLoop().RunUntilIdle();
+
+  extension = registry()->GetInstalledExtension(good_crx);
+  ASSERT_TRUE(extension);
+  ManagementPolicy* policy =
+      ExtensionSystem::Get(browser_context())->management_policy();
+
+  // The extension should still be installed, and should be required to
+  // remain installed.
+  EXPECT_TRUE(policy->MustRemainInstalled(extension, nullptr));
+  EXPECT_FALSE(policy->UserMayModifySettings(extension, nullptr));
+  EXPECT_EQ(extension->location(), Manifest::EXTERNAL_POLICY_DOWNLOAD);
+
+  EXPECT_TRUE(registry()->enabled_extensions().GetByID(good_crx));
+  ExtensionPrefs* prefs = ExtensionPrefs::Get(profile());
+  EXPECT_EQ(disable_reason::DISABLE_NONE, prefs->GetDisableReasons(good_crx));
+  EXPECT_FALSE(prefs->IsExtensionDisabled(good_crx));
+
+  // Simulate a chrome process restart.
+  service()->ReloadExtensionsForTest();
+  policy = ExtensionSystem::Get(browser_context())->management_policy();
+  EXPECT_TRUE(registry()->enabled_extensions().Contains(good_crx));
+  extension = registry()->GetInstalledExtension(good_crx);
+  // The location should remain same on restart.
+  EXPECT_EQ(extension->location(), Manifest::EXTERNAL_POLICY_DOWNLOAD);
+  // Extension should behave similar to force installed on restart.
+  EXPECT_TRUE(policy->MustRemainInstalled(extension, nullptr));
+  EXPECT_FALSE(policy->UserMayModifySettings(extension, nullptr));
+}
+
 // Regression test for crbug.com/460699. Ensure PluginManager doesn't crash even
 // if OnExtensionUnloaded is invoked twice in succession.
 TEST_F(ExtensionServiceTest, PluginManagerCrash) {
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 5aefe00..107822f 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -2504,11 +2504,6 @@
     "expiry_milestone": 90
   },
   {
-    "name": "kids-management-url-classification",
-    "owners": [ "alanwink", "vtrmc", "unichromeos-eng" ],
-    "expiry_milestone": 80
-  },
-  {
     "name": "list-all-display-modes",
     "owners": [ "//ui/display/OWNERS" ],
     // This flag is used for debugging and development purposes to list all
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 921895e..88a66fcf 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -1980,11 +1980,6 @@
     "Requires dedicated processes for an additional set of origins, "
     "specified as a comma-separated list.";
 
-const char kKidsManagementUrlClassificationName[] =
-    "KidsMangement Url Classification";
-const char kKidsManagementUrlClassificationDescription[] =
-    "Uses KidsManagementService to classify URLs for Kid Accounts.";
-
 const char kSiteIsolationOptOutName[] = "Disable site isolation";
 const char kSiteIsolationOptOutDescription[] =
     "Disables site isolation "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 5112a3e..98cb57a 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1178,9 +1178,6 @@
 extern const char kIsolateOriginsName[];
 extern const char kIsolateOriginsDescription[];
 
-extern const char kKidsManagementUrlClassificationName[];
-extern const char kKidsManagementUrlClassificationDescription[];
-
 extern const char kSiteIsolationOptOutName[];
 extern const char kSiteIsolationOptOutDescription[];
 extern const char kSiteIsolationOptOutChoiceDefault[];
diff --git a/chrome/browser/interstitials/chrome_metrics_helper.cc b/chrome/browser/interstitials/chrome_metrics_helper.cc
index 35046b6..89b553f 100644
--- a/chrome/browser/interstitials/chrome_metrics_helper.cc
+++ b/chrome/browser/interstitials/chrome_metrics_helper.cc
@@ -7,7 +7,7 @@
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/history/history_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
-#include "components/captive_portal/buildflags.h"
+#include "components/captive_portal/core/buildflags.h"
 #include "components/history/core/browser/history_service.h"
 #include "content/public/browser/web_contents.h"
 
diff --git a/chrome/browser/interstitials/chrome_metrics_helper.h b/chrome/browser/interstitials/chrome_metrics_helper.h
index e53ec42..d9dd69d 100644
--- a/chrome/browser/interstitials/chrome_metrics_helper.h
+++ b/chrome/browser/interstitials/chrome_metrics_helper.h
@@ -8,7 +8,7 @@
 #include <string>
 
 #include "base/macros.h"
-#include "components/captive_portal/buildflags.h"
+#include "components/captive_portal/core/buildflags.h"
 #include "components/security_interstitials/core/metrics_helper.h"
 #include "url/gurl.h"
 
diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc
index 663b997..75981a4 100644
--- a/chrome/browser/net/profile_network_context_service.cc
+++ b/chrome/browser/net/profile_network_context_service.cc
@@ -298,8 +298,11 @@
   if ((!in_memory && !profile_->IsOffTheRecord())) {
     // TODO(jam): delete this code 1 year after Network Service shipped to all
     // stable users, which would be after M83 branches.
-    base::FilePath media_cache_path = GetPartitionPath(relative_partition_path)
-                                          .Append(chrome::kMediaCacheDirname);
+    base::FilePath base_cache_path;
+    chrome::GetUserCacheDirectory(GetPartitionPath(relative_partition_path),
+                                  &base_cache_path);
+    base::FilePath media_cache_path =
+        base_cache_path.Append(chrome::kMediaCacheDirname);
     base::PostTask(
         FROM_HERE,
         {base::ThreadPool(), base::TaskPriority::BEST_EFFORT, base::MayBlock(),
diff --git a/chrome/browser/permissions/permission_request.h b/chrome/browser/permissions/permission_request.h
index 6e4db4a..b7b1ec4 100644
--- a/chrome/browser/permissions/permission_request.h
+++ b/chrome/browser/permissions/permission_request.h
@@ -131,6 +131,9 @@
   // It is safe for the request to be deleted at this point -- it will receive
   // no further message from the permission request system. This method will
   // eventually be called on every request which is not unregistered.
+  // It is ok to call this method without actually resolving the request via
+  // PermissionGranted(), PermissionDenied() or Canceled(). However, it will not
+  // resolve the javascript promise from the requesting origin.
   virtual void RequestFinished() = 0;
 
   // Used to record UMA metrics for permission requests.
diff --git a/chrome/browser/permissions/permission_request_manager.cc b/chrome/browser/permissions/permission_request_manager.cc
index 40806ba..1f944c5 100644
--- a/chrome/browser/permissions/permission_request_manager.cc
+++ b/chrome/browser/permissions/permission_request_manager.cc
@@ -138,9 +138,9 @@
     if (url::Origin::Create(request->GetOrigin()) ==
         url::Origin::Create(app_data->install_url())) {
       request->PermissionGranted();
-      request->RequestFinished();
-      return;
     }
+    request->RequestFinished();
+    return;
   }
 #endif
 
diff --git a/chrome/browser/permissions/permission_request_manager_unittest.cc b/chrome/browser/permissions/permission_request_manager_unittest.cc
index c8942a4..4356aaa 100644
--- a/chrome/browser/permissions/permission_request_manager_unittest.cc
+++ b/chrome/browser/permissions/permission_request_manager_unittest.cc
@@ -995,9 +995,7 @@
   WaitForBubbleToBeShown();
   // It should not be granted by default.
   EXPECT_FALSE(request->granted());
-  // But you should be able to accept it.
-  Accept();
-  EXPECT_TRUE(request->granted());
+  EXPECT_TRUE(request->finished());
 }
 #endif  // defined(OS_CHROMEOS)
 
diff --git a/chrome/browser/policy/chrome_browser_policy_connector.cc b/chrome/browser/policy/chrome_browser_policy_connector.cc
index 637c861be..90232aa 100644
--- a/chrome/browser/policy/chrome_browser_policy_connector.cc
+++ b/chrome/browser/policy/chrome_browser_policy_connector.cc
@@ -60,13 +60,6 @@
 
 namespace {
 
-void AddMigrators(ConfigurationPolicyProvider* provider) {
-#if defined(OS_WIN)
-  provider->AddMigrator(
-      std::make_unique<browser_switcher::BrowserSwitcherPolicyMigrator>());
-#endif
-}
-
 bool ProviderHasPolicies(const ConfigurationPolicyProvider* provider) {
   if (!provider)
     return false;
@@ -142,11 +135,18 @@
 
 std::vector<std::unique_ptr<policy::ConfigurationPolicyProvider>>
 ChromeBrowserPolicyConnector::CreatePolicyProviders() {
+  // Assign ExtensionPolicyMigrators before any policy providers are created.
+#if defined(OS_WIN)
+  std::vector<std::unique_ptr<ExtensionPolicyMigrator>> migrators;
+  migrators.push_back(
+      std::make_unique<browser_switcher::BrowserSwitcherPolicyMigrator>());
+  ConfigurationPolicyProvider::SetMigrators(std::move(migrators));
+#endif
+
   auto providers = BrowserPolicyConnector::CreatePolicyProviders();
   std::unique_ptr<ConfigurationPolicyProvider> platform_provider =
       CreatePlatformProvider();
   if (platform_provider) {
-    AddMigrators(platform_provider.get());
     platform_provider_ = platform_provider.get();
     // PlatformProvider should be before all other providers (highest priority).
     providers.insert(providers.begin(), std::move(platform_provider));
@@ -158,7 +158,6 @@
           ChromeBrowserCloudManagementController::CreatePolicyManager(
               platform_provider_);
   if (machine_level_user_cloud_policy_manager) {
-    AddMigrators(machine_level_user_cloud_policy_manager.get());
     machine_level_user_cloud_policy_manager_ =
         machine_level_user_cloud_policy_manager.get();
     providers.push_back(std::move(machine_level_user_cloud_policy_manager));
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index 0e7b100b..37468687 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -1699,6 +1699,11 @@
   handlers->AddHandler(std::make_unique<IntRangePolicyHandler>(
       key::kPrintJobHistoryExpirationPeriod,
       prefs::kPrintJobHistoryExpirationPeriod, -1, INT_MAX, true));
+#if defined(USE_CUPS)
+  handlers->AddHandler(std::make_unique<extensions::ExtensionListPolicyHandler>(
+      key::kPrintingAPIExtensionsWhitelist,
+      prefs::kPrintingAPIExtensionsWhitelist, /*allow_wildcards=*/false));
+#endif
   handlers->AddHandler(std::make_unique<SimpleSchemaValidatingPolicyHandler>(
       key::kNetworkFileSharesPreconfiguredShares,
       prefs::kNetworkFileSharesPreconfiguredShares, chrome_schema,
diff --git a/chrome/browser/policy/extension_policy_browsertest.cc b/chrome/browser/policy/extension_policy_browsertest.cc
index d95d7b2..e63af8e 100644
--- a/chrome/browser/policy/extension_policy_browsertest.cc
+++ b/chrome/browser/policy/extension_policy_browsertest.cc
@@ -39,6 +39,7 @@
 #include "extensions/browser/updater/extension_cache_fake.h"
 #include "extensions/common/constants.h"
 #include "extensions/common/features/feature_channel.h"
+#include "extensions/common/manifest.h"
 #include "extensions/common/manifest_handlers/shared_module_info.h"
 #include "extensions/common/value_builder.h"
 #include "net/test/embedded_test_server/http_request.h"
@@ -189,6 +190,20 @@
     observer.WaitForExtensionUnloaded();
   }
 
+  void AddExtensionToForceList(PolicyMap* policies,
+                               const std::string& id,
+                               const GURL& update_url) {
+    // Setting the forcelist extension should install extension with ExtensionId
+    // equal to id.
+    base::ListValue forcelist;
+    forcelist.AppendString(
+        base::StringPrintf(update_url.is_empty() ? "%s" : "%s;%s", id.c_str(),
+                           update_url.spec().c_str()));
+    policies->Set(key::kExtensionInstallForcelist, POLICY_LEVEL_MANDATORY,
+                  POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD,
+                  forcelist.CreateDeepCopy(), nullptr);
+  }
+
   std::unique_ptr<extensions::ExtensionCacheFake> test_extension_cache_;
   extensions::ScopedIgnoreContentVerifierForTest ignore_content_verifier_;
   extensions::ExtensionUpdater::ScopedSkipScheduledCheckForTest
@@ -505,16 +520,11 @@
   // should be automatically installed too.
   base::ListValue blacklist;
   blacklist.AppendString("*");
-  base::ListValue forcelist;
-  forcelist.AppendString(
-      base::StringPrintf("%s;%s", kImporterId, update_xml_url.spec().c_str()));
   PolicyMap policies;
+  AddExtensionToForceList(&policies, kImporterId, update_xml_url);
   policies.Set(key::kExtensionInstallBlacklist, POLICY_LEVEL_MANDATORY,
                POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD,
                blacklist.CreateDeepCopy(), nullptr);
-  policies.Set(key::kExtensionInstallForcelist, POLICY_LEVEL_MANDATORY,
-               POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD,
-               forcelist.CreateDeepCopy(), nullptr);
 
   extensions::TestExtensionRegistryObserver observe_importer(registry,
                                                              kImporterId);
@@ -665,6 +675,63 @@
 
 }  // namespace
 
+// Verifies that if extension is installed manually by user and then added to
+// force-installed policy, it can't be uninstalled. And then if it removed
+// from the force installed list, it should be uninstalled.
+IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest,
+                       ExtensionAddedAndRemovedFromForceInstalledList) {
+  ExtensionRequestInterceptor interceptor;
+
+  ASSERT_FALSE(extension_registry()->GetExtensionById(
+      kGoodCrxId, extensions::ExtensionRegistry::EVERYTHING));
+
+  ASSERT_TRUE(InstallExtension(kGoodCrxName));
+  EXPECT_TRUE(extension_registry()->enabled_extensions().GetByID(kGoodCrxId));
+
+  EXPECT_EQ(extension_registry()
+                ->enabled_extensions()
+                .GetByID(kGoodCrxId)
+                ->location(),
+            extensions::Manifest::INTERNAL);
+
+  // The user is allowed to disable the added extension.
+  EXPECT_TRUE(extension_service()->IsExtensionEnabled(kGoodCrxId));
+  DisableExtension(kGoodCrxId);
+  EXPECT_FALSE(extension_service()->IsExtensionEnabled(kGoodCrxId));
+
+  // Explicitly re-enable the extension.
+  extension_service()->EnableExtension(kGoodCrxId);
+
+  // Extensions that are force-installed come from an update URL, which defaults
+  // to the webstore. Use a test URL for this test with an update manifest
+  // that includes "good_v1.crx".
+  ASSERT_TRUE(embedded_test_server()->Start());
+  GURL url =
+      embedded_test_server()->GetURL("/extensions/good_v1_update_manifest.xml");
+
+  PolicyMap policies;
+  AddExtensionToForceList(&policies, kGoodCrxId, url);
+  UpdateProviderPolicy(policies);
+  const extensions::Extension* extension =
+      extension_registry()->enabled_extensions().GetByID(kGoodCrxId);
+  EXPECT_TRUE(extension);
+
+  // The user is not allowed to uninstall force-installed extensions.
+  UninstallExtension(kGoodCrxId, /*expect_success=*/false);
+  EXPECT_EQ(extension->location(),
+            extensions::Manifest::EXTERNAL_POLICY_DOWNLOAD);
+
+  // Remove the force installed policy.
+  policies.Erase(policy::key::kExtensionInstallForcelist);
+  UpdateProviderPolicy(policies);
+
+  // TODO(crbug.com/1042187)
+  // Extension should be uninstalled now. It would be better to keep it, but it
+  // doesn't happen for now.
+  ASSERT_FALSE(extension_registry()->GetExtensionById(
+      kGoodCrxId, extensions::ExtensionRegistry::EVERYTHING));
+}
+
 IN_PROC_BROWSER_TEST_F(ExtensionPolicyTest, ExtensionInstallForcelist) {
   // Verifies that extensions that are force-installed by policies are
   // installed and can't be uninstalled.
@@ -683,14 +750,9 @@
   GURL url =
       embedded_test_server()->GetURL("/extensions/good_v1_update_manifest.xml");
 
-  // Setting the forcelist extension should install "good_v1.crx".
-  base::ListValue forcelist;
-  forcelist.AppendString(
-      base::StringPrintf("%s;%s", kGoodCrxId, url.spec().c_str()));
   PolicyMap policies;
-  policies.Set(key::kExtensionInstallForcelist, POLICY_LEVEL_MANDATORY,
-               POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD,
-               forcelist.CreateDeepCopy(), nullptr);
+  AddExtensionToForceList(&policies, kGoodCrxId, url);
+
   extensions::TestExtensionRegistryObserver observer(extension_registry());
   MockedInstallationReporterObserver reporter_observer(browser()->profile());
   // CREATED is the default stage in MockedInstallationReporterObserver, so it
@@ -841,13 +903,8 @@
   ASSERT_FALSE(registry->GetExtensionById(
       kGoodCrxId, extensions::ExtensionRegistry::EVERYTHING));
 
-  // Setting the forcelist extension should install "good_v1.crx".
-  base::ListValue forcelist;
-  forcelist.AppendString(kGoodCrxId);
   PolicyMap policies;
-  policies.Set(key::kExtensionInstallForcelist, POLICY_LEVEL_MANDATORY,
-               POLICY_SCOPE_USER, POLICY_SOURCE_CLOUD,
-               forcelist.CreateDeepCopy(), nullptr);
+  AddExtensionToForceList(&policies, kGoodCrxId, GURL());
   extensions::TestExtensionRegistryObserver observer(registry);
   UpdateProviderPolicy(policies);
   observer.WaitForExtensionWillBeInstalled();
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 1ee3be64..1258828f 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -257,6 +257,9 @@
 #include "chrome/browser/chromeos/customization/customization_document.h"
 #include "chrome/browser/chromeos/extensions/echo_private_api.h"
 #include "chrome/browser/chromeos/extensions/login_screen/login/login_api.h"
+#if defined(USE_CUPS)
+#include "chrome/browser/chromeos/extensions/printing/printing_api_handler.h"
+#endif
 #include "chrome/browser/chromeos/file_system_provider/registry.h"
 #include "chrome/browser/chromeos/first_run/first_run.h"
 #include "chrome/browser/chromeos/guest_os/guest_os_pref_names.h"
@@ -984,6 +987,9 @@
   crostini::prefs::RegisterProfilePrefs(registry);
   chromeos::attestation::TpmChallengeKey::RegisterProfilePrefs(registry);
   extensions::EPKPChallengeKey::RegisterProfilePrefs(registry);
+#if defined(USE_CUPS)
+  extensions::PrintingAPIHandler::RegisterProfilePrefs(registry);
+#endif
   flags_ui::PrefServiceFlagsStorage::RegisterProfilePrefs(registry);
   guest_os::prefs::RegisterProfilePrefs(registry);
   lock_screen_apps::StateController::RegisterProfilePrefs(registry);
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
index a5a90780..4d84b74 100644
--- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -86,7 +86,7 @@
 #include "chrome/browser/unified_consent/unified_consent_service_factory.h"
 #include "chrome/browser/web_data_service_factory.h"
 #include "chrome/common/buildflags.h"
-#include "components/captive_portal/buildflags.h"
+#include "components/captive_portal/core/buildflags.h"
 #include "components/feature_engagement/buildflags.h"
 #include "components/safe_browsing/buildflags.h"
 #include "components/spellcheck/spellcheck_buildflags.h"
diff --git a/chrome/browser/profiles/profile_browsertest_android.cc b/chrome/browser/profiles/profile_browsertest_android.cc
new file mode 100644
index 0000000..0f1f5471
--- /dev/null
+++ b/chrome/browser/profiles/profile_browsertest_android.cc
@@ -0,0 +1,147 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/profiles/profile.h"
+
+#include <stddef.h>
+
+#include <memory>
+
+#include "base/bind.h"
+#include "base/command_line.h"
+#include "base/files/file_path.h"
+#include "base/files/file_path_watcher.h"
+#include "base/files/file_util.h"
+#include "base/logging.h"
+#include "base/macros.h"
+#include "base/run_loop.h"
+#include "base/sequenced_task_runner.h"
+#include "base/task/post_task.h"
+#include "chrome/browser/ui/android/tab_model/tab_model.h"
+#include "chrome/browser/ui/android/tab_model/tab_model_list.h"
+#include "chrome/common/chrome_constants.h"
+#include "chrome/common/chrome_paths_internal.h"
+#include "chrome/test/base/android/android_browser_test.h"
+#include "content/public/browser/browser_task_traits.h"
+#include "content/public/browser/browser_thread.h"
+#include "content/public/test/test_utils.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+class ProfileDeleteMediaBrowserTest : public AndroidBrowserTest {
+ protected:
+  void SetUp() override {
+    // This needs to happen before AndroidBrowserTest::SetUp(), since that
+    // invokes deletion. Luckily on Android chrome::GetUserCacheDirectory()
+    // doesn't actually look at its input. (This would be cleaner as a PRE_
+    // test, but that doesn't appear to be supported here).
+    chrome::GetUserCacheDirectory(base::FilePath(), &cache_base_);
+    base::FilePath media_cache_path =
+        cache_base_.Append(chrome::kMediaCacheDirname);
+
+    base::ScopedAllowBlockingForTesting allow_blocking;
+    EXPECT_TRUE(base::CreateDirectory(media_cache_path));
+    std::string data = "foo";
+    base::WriteFile(media_cache_path.AppendASCII("foo"), data.c_str(),
+                    data.size());
+
+    AndroidBrowserTest::SetUp();
+  }
+
+  base::FilePath cache_base_;
+};
+
+namespace {
+
+// Watches for the destruction of the specified path (Which, in the tests that
+// use it, is typically a directory), and expects the parent directory not to be
+// deleted.
+//
+// The public methods are called on the UI thread, the private ones called on a
+// separate SequencedTaskRunner.
+class FileDestructionWatcher {
+ public:
+  explicit FileDestructionWatcher(const base::FilePath& watched_file_path)
+      : watched_file_path_(watched_file_path) {
+    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+  }
+
+  void WaitForDestruction() {
+    DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+    DCHECK(!watcher_);
+    base::CreateSequencedTaskRunner({base::ThreadPool(), base::MayBlock()})
+        ->PostTask(FROM_HERE,
+                   base::BindOnce(&FileDestructionWatcher::StartWatchingPath,
+                                  base::Unretained(this)));
+    run_loop_.Run();
+    // The watcher should be destroyed before quitting the run loop, once the
+    // file has been destroyed.
+    DCHECK(!watcher_);
+
+    // Double check that the file was destroyed, and that the parent directory
+    // was not.
+    base::ScopedAllowBlockingForTesting allow_blocking;
+    EXPECT_FALSE(base::PathExists(watched_file_path_));
+    EXPECT_TRUE(base::PathExists(watched_file_path_.DirName()));
+  }
+
+ private:
+  void StartWatchingPath() {
+    DCHECK(!watcher_);
+    watcher_ = std::make_unique<base::FilePathWatcher>();
+    // Start watching before checking if the file exists, as the file could be
+    // destroyed between the existence check and when we start watching, if the
+    // order were reversed.
+    EXPECT_TRUE(watcher_->Watch(
+        watched_file_path_, false /* recursive */,
+        base::BindRepeating(&FileDestructionWatcher::OnPathChanged,
+                            base::Unretained(this))));
+    CheckIfPathExists();
+  }
+
+  void OnPathChanged(const base::FilePath& path, bool error) {
+    EXPECT_EQ(watched_file_path_, path);
+    EXPECT_FALSE(error);
+    CheckIfPathExists();
+  }
+
+  // Checks if the path exists, and if so, destroys the watcher and quits
+  // |run_loop_|.
+  void CheckIfPathExists() {
+    if (!base::PathExists(watched_file_path_)) {
+      watcher_.reset();
+      run_loop_.Quit();
+      return;
+    }
+  }
+
+  base::RunLoop run_loop_;
+  const base::FilePath watched_file_path_;
+
+  // Created and destroyed off of the UI thread, on the sequence used to watch
+  // for changes.
+  std::unique_ptr<base::FilePathWatcher> watcher_;
+
+  DISALLOW_COPY_AND_ASSIGN(FileDestructionWatcher);
+};
+
+}  // namespace
+
+IN_PROC_BROWSER_TEST_F(ProfileDeleteMediaBrowserTest, DeleteMediaCache) {
+  // Make sure the legacy media cache directory (created in SetUp) gets deleted
+  // properly.
+  base::FilePath cache_base;
+  chrome::GetUserCacheDirectory(TabModelList::get(0)->GetProfile()->GetPath(),
+                                &cache_base);
+
+  // |cache_base_| computation in SetUp() makes assumptions on implementation
+  // details to be able to run that early, so verify its result is sane.
+  EXPECT_EQ(cache_base, cache_base_);
+  base::FilePath media_cache_path =
+      cache_base.Append(chrome::kMediaCacheDirname);
+
+  base::ScopedAllowBlockingForTesting allow_blocking;
+  FileDestructionWatcher destruction_watcher(media_cache_path);
+  destruction_watcher.WaitForDestruction();
+}
diff --git a/chrome/browser/resources/settings/privacy_page/personalization_options.html b/chrome/browser/resources/settings/privacy_page/personalization_options.html
index a683d76..4bf9895 100644
--- a/chrome/browser/resources/settings/privacy_page/personalization_options.html
+++ b/chrome/browser/resources/settings/privacy_page/personalization_options.html
@@ -50,10 +50,13 @@
         label="$i18n{searchSuggestPref}"
         sub-label="$i18n{searchSuggestPrefDesc}">
     </settings-toggle-button>
-    <settings-toggle-button pref="{{prefs.alternate_error_pages.enabled}}"
+  <template is="dom-if" if="[[!privacySettingsRedesignEnabled_]]">
+    <settings-toggle-button id="linkDoctor"
+        pref="{{prefs.alternate_error_pages.enabled}}"
         label="$i18n{linkDoctorPref}"
         sub-label="$i18n{linkDoctorPrefDesc}">
     </settings-toggle-button>
+  </template>
 <if expr="_google_chrome">
 <if expr="chromeos">
     <settings-toggle-button pref="{{prefs.cros.metrics.reportingEnabled}}"
diff --git a/chrome/browser/resources/settings/privacy_page/personalization_options.js b/chrome/browser/resources/settings/privacy_page/personalization_options.js
index b297960..dd15512 100644
--- a/chrome/browser/resources/settings/privacy_page/personalization_options.js
+++ b/chrome/browser/resources/settings/privacy_page/personalization_options.js
@@ -56,6 +56,14 @@
     showSignoutDialog_: Boolean,
 
     /** @private */
+    privacySettingsRedesignEnabled_: {
+      type: Boolean,
+      value: function() {
+        return loadTimeData.getBoolean('privacySettingsRedesignEnabled');
+      },
+    },
+
+    /** @private */
     syncFirstSetupInProgress_: {
       type: Boolean,
       value: false,
diff --git a/chrome/browser/sharing/proto/sharing_message.proto b/chrome/browser/sharing/proto/sharing_message.proto
index 771d899..a271911e 100644
--- a/chrome/browser/sharing/proto/sharing_message.proto
+++ b/chrome/browser/sharing/proto/sharing_message.proto
@@ -99,14 +99,23 @@
 
 // FCM channel configuration. Message will be delivered as a FCM message.
 message FCMChannelConfiguration {
-  // FCM registration token of device. required.
-  string fcm_token = 1;
+  // FCM registration token of device subscribed using VAPID key. required.
+  string vapid_fcm_token = 1;
 
-  // Subscription public key required for RFC 8291.
-  bytes p256dh = 2;
+  // Subscription public key required for RFC 8291 using VAPID key.
+  bytes vapid_p256dh = 2;
 
-  // Auth secret key required for RFC 8291.
-  bytes auth_secret = 3;
+  // Auth secret key required for RFC 8291 using VAPID key.
+  bytes vapid_auth_secret = 3;
+
+  // FCM registration token of device subscribed using sender ID. required.
+  string sender_id_fcm_token = 4;
+
+  // Subscription public key required for RFC 8291 using sender ID.
+  bytes sender_id_p256dh = 5;
+
+  // Auth secret key required for RFC 8291 using sender ID.
+  bytes sender_id_auth_secret = 6;
 }
 
 // Server channel configuration. Message will be delivered through server
diff --git a/chrome/browser/sharing/sharing_fcm_handler.cc b/chrome/browser/sharing/sharing_fcm_handler.cc
index f30a092..6d41b433 100644
--- a/chrome/browser/sharing/sharing_fcm_handler.cc
+++ b/chrome/browser/sharing/sharing_fcm_handler.cc
@@ -141,8 +141,8 @@
   if (original_message.has_fcm_channel_configuration()) {
     auto& fcm_configuration = original_message.fcm_channel_configuration();
     return syncer::DeviceInfo::SharingTargetInfo{
-        fcm_configuration.fcm_token(), fcm_configuration.p256dh(),
-        fcm_configuration.auth_secret()};
+        fcm_configuration.vapid_fcm_token(), fcm_configuration.vapid_p256dh(),
+        fcm_configuration.vapid_auth_secret()};
   }
 
   return sync_preference_->GetTargetInfo(original_message.sender_guid());
diff --git a/chrome/browser/sharing/sharing_fcm_handler_unittest.cc b/chrome/browser/sharing/sharing_fcm_handler_unittest.cc
index c46ec05b..73082537 100644
--- a/chrome/browser/sharing/sharing_fcm_handler_unittest.cc
+++ b/chrome/browser/sharing/sharing_fcm_handler_unittest.cc
@@ -305,9 +305,9 @@
   sharing_message.mutable_ping_message();
   chrome_browser_sharing::FCMChannelConfiguration* fcm_configuration =
       sharing_message.mutable_fcm_channel_configuration();
-  fcm_configuration->set_fcm_token(kFCMToken);
-  fcm_configuration->set_p256dh(kP256dh);
-  fcm_configuration->set_auth_secret(kAuthSecret);
+  fcm_configuration->set_vapid_fcm_token(kFCMToken);
+  fcm_configuration->set_vapid_p256dh(kP256dh);
+  fcm_configuration->set_vapid_auth_secret(kAuthSecret);
   gcm::IncomingMessage incoming_message =
       CreateGCMIncomingMessage(kTestMessageId, sharing_message);
 
diff --git a/chrome/browser/sharing/sharing_fcm_sender.cc b/chrome/browser/sharing/sharing_fcm_sender.cc
index abc47ae..87375efa 100644
--- a/chrome/browser/sharing/sharing_fcm_sender.cc
+++ b/chrome/browser/sharing/sharing_fcm_sender.cc
@@ -101,10 +101,17 @@
     return false;
 
   auto* fcm_configuration = message->mutable_fcm_channel_configuration();
-  fcm_configuration->set_fcm_token(sharing_info->vapid_target_info.fcm_token);
-  fcm_configuration->set_p256dh(sharing_info->vapid_target_info.p256dh);
-  fcm_configuration->set_auth_secret(
+  fcm_configuration->set_vapid_fcm_token(
+      sharing_info->vapid_target_info.fcm_token);
+  fcm_configuration->set_vapid_p256dh(sharing_info->vapid_target_info.p256dh);
+  fcm_configuration->set_vapid_auth_secret(
       sharing_info->vapid_target_info.auth_secret);
+  fcm_configuration->set_sender_id_fcm_token(
+      sharing_info->sender_id_target_info.fcm_token);
+  fcm_configuration->set_sender_id_p256dh(
+      sharing_info->sender_id_target_info.p256dh);
+  fcm_configuration->set_sender_id_auth_secret(
+      sharing_info->sender_id_target_info.auth_secret);
   return true;
 }
 
diff --git a/chrome/browser/sharing/sharing_message_bridge.h b/chrome/browser/sharing/sharing_message_bridge.h
index c8f6b6030..d4c332a 100644
--- a/chrome/browser/sharing/sharing_message_bridge.h
+++ b/chrome/browser/sharing/sharing_message_bridge.h
@@ -7,17 +7,33 @@
 
 #include <memory>
 
+#include "base/callback.h"
+#include "base/memory/weak_ptr.h"
+#include "components/keyed_service/core/keyed_service.h"
 #include "components/sync/protocol/sharing_message_specifics.pb.h"
 
-// Class to provide an interface to send sharing messages using Sync.
-class SharingMessageBridge {
- public:
-  // TODO(crbug.com/1034930): take callbacks once commit error propagation back
-  // to the bridge is implemented.
-  virtual void SendSharingMessage(
-      std::unique_ptr<sync_pb::SharingMessageSpecifics> specifics) = 0;
+namespace syncer {
+class ModelTypeControllerDelegate;
+}  // namespace syncer
 
-  virtual ~SharingMessageBridge() = default;
+// Class to provide an interface to send sharing messages using Sync.
+class SharingMessageBridge : public KeyedService {
+ public:
+  using CommitFinishedCallback =
+      base::OnceCallback<void(const sync_pb::SharingMessageCommitError&)>;
+
+  // Sends Sharing Message to Sync server. |on_commit_callback| will be called
+  // when commit attempt finishes (either successfully or unsuccessfully).
+  // TODO(crbug.com/1034932): take each parameter separately and construct
+  // specifics inside. Currently this method updates given |specifics| and
+  // fills in |message_id| field.
+  virtual void SendSharingMessage(
+      std::unique_ptr<sync_pb::SharingMessageSpecifics> specifics,
+      CommitFinishedCallback on_commit_callback) = 0;
+
+  // Returns the delegate for the controller, i.e. sync integration point.
+  virtual base::WeakPtr<syncer::ModelTypeControllerDelegate>
+  GetControllerDelegate() = 0;
 };
 
 #endif  // CHROME_BROWSER_SHARING_SHARING_MESSAGE_BRIDGE_H_
diff --git a/chrome/browser/sharing/sharing_message_bridge_factory.cc b/chrome/browser/sharing/sharing_message_bridge_factory.cc
new file mode 100644
index 0000000..3e4c8dd
--- /dev/null
+++ b/chrome/browser/sharing/sharing_message_bridge_factory.cc
@@ -0,0 +1,45 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/sharing/sharing_message_bridge_factory.h"
+#include "chrome/browser/sharing/sharing_message_bridge_impl.h"
+
+#include "base/memory/singleton.h"
+#include "chrome/common/channel_info.h"
+#include "components/keyed_service/content/browser_context_dependency_manager.h"
+#include "components/sync/base/report_unrecoverable_error.h"
+#include "components/sync/model_impl/client_tag_based_model_type_processor.h"
+
+namespace {
+constexpr char kServiceName[] = "SharingMessageBridge";
+}  // namespace
+
+SharingMessageBridgeFactory::SharingMessageBridgeFactory()
+    : BrowserContextKeyedServiceFactory(
+          kServiceName,
+          BrowserContextDependencyManager::GetInstance()) {}
+
+SharingMessageBridgeFactory::~SharingMessageBridgeFactory() = default;
+
+// static
+SharingMessageBridgeFactory* SharingMessageBridgeFactory::GetInstance() {
+  return base::Singleton<SharingMessageBridgeFactory>::get();
+}
+
+// static
+SharingMessageBridge* SharingMessageBridgeFactory::GetForBrowserContext(
+    content::BrowserContext* context) {
+  return static_cast<SharingMessageBridge*>(
+      GetInstance()->GetServiceForBrowserContext(context, true));
+}
+
+KeyedService* SharingMessageBridgeFactory::BuildServiceInstanceFor(
+    content::BrowserContext* context) const {
+  auto change_processor =
+      std::make_unique<syncer::ClientTagBasedModelTypeProcessor>(
+          syncer::SHARING_MESSAGE,
+          base::BindRepeating(&syncer::ReportUnrecoverableError,
+                              chrome::GetChannel()));
+  return new SharingMessageBridgeImpl(std::move(change_processor));
+}
diff --git a/chrome/browser/sharing/sharing_message_bridge_factory.h b/chrome/browser/sharing/sharing_message_bridge_factory.h
new file mode 100644
index 0000000..c88f6ff
--- /dev/null
+++ b/chrome/browser/sharing/sharing_message_bridge_factory.h
@@ -0,0 +1,42 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_SHARING_SHARING_MESSAGE_BRIDGE_FACTORY_H_
+#define CHROME_BROWSER_SHARING_SHARING_MESSAGE_BRIDGE_FACTORY_H_
+
+#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
+
+namespace base {
+template <typename T>
+struct DefaultSingletonTraits;
+}  // namespace base
+
+class SharingMessageBridge;
+
+// Factory for sharing message bridge. We need this factory to prevent cyclic
+// dependency between SharingServiceFactory and ProfileSyncServiceFactory.
+class SharingMessageBridgeFactory : public BrowserContextKeyedServiceFactory {
+ public:
+  // Returns singleton instance of SharingMessageBridgeFactory.
+  static SharingMessageBridgeFactory* GetInstance();
+
+  // Returns the SharingMessageBridge associated with |context|.
+  static SharingMessageBridge* GetForBrowserContext(
+      content::BrowserContext* context);
+
+ private:
+  friend struct base::DefaultSingletonTraits<SharingMessageBridgeFactory>;
+
+  SharingMessageBridgeFactory();
+  ~SharingMessageBridgeFactory() override;
+  SharingMessageBridgeFactory(const SharingMessageBridgeFactory&) = delete;
+  SharingMessageBridgeFactory& operator=(const SharingMessageBridgeFactory&) =
+      delete;
+
+  // BrowserContextKeyedServiceFactory overrides:
+  KeyedService* BuildServiceInstanceFor(
+      content::BrowserContext* context) const override;
+};
+
+#endif  // CHROME_BROWSER_SHARING_SHARING_MESSAGE_BRIDGE_FACTORY_H_
diff --git a/chrome/browser/sharing/sharing_message_bridge_impl.cc b/chrome/browser/sharing/sharing_message_bridge_impl.cc
index b9cb0371..035ace8 100644
--- a/chrome/browser/sharing/sharing_message_bridge_impl.cc
+++ b/chrome/browser/sharing/sharing_message_bridge_impl.cc
@@ -4,15 +4,25 @@
 
 #include "chrome/browser/sharing/sharing_message_bridge_impl.h"
 
+#include "base/guid.h"
 #include "components/sync/model/metadata_batch.h"
 #include "components/sync/model/mutable_data_batch.h"
 #include "components/sync/model_impl/in_memory_metadata_change_list.h"
 
 namespace {
 
+syncer::ClientTagHash GetClientTagHashFromStorageKey(
+    const std::string& storage_key) {
+  return syncer::ClientTagHash::FromUnhashed(syncer::SHARING_MESSAGE,
+                                             storage_key);
+}
+
 std::unique_ptr<syncer::EntityData> MoveToEntityData(
     std::unique_ptr<sync_pb::SharingMessageSpecifics> specifics) {
   auto entity_data = std::make_unique<syncer::EntityData>();
+  entity_data->name = specifics->message_id();
+  entity_data->client_tag_hash =
+      GetClientTagHashFromStorageKey(specifics->message_id());
   entity_data->specifics.set_allocated_sharing_message(specifics.release());
   return entity_data;
 }
@@ -31,16 +41,28 @@
 SharingMessageBridgeImpl::~SharingMessageBridgeImpl() = default;
 
 void SharingMessageBridgeImpl::SendSharingMessage(
-    std::unique_ptr<sync_pb::SharingMessageSpecifics> specifics) {
+    std::unique_ptr<sync_pb::SharingMessageSpecifics> specifics,
+    CommitFinishedCallback on_commit_callback) {
   std::unique_ptr<syncer::MetadataChangeList> metadata_change_list =
       CreateMetadataChangeList();
+  // Fill in the internal message id with unique generated identifier.
+  const std::string message_id = base::GenerateGUID();
+  specifics->set_message_id(message_id);
   std::unique_ptr<syncer::EntityData> entity_data =
       MoveToEntityData(std::move(specifics));
-  const std::string empty_storage_key;
-  change_processor()->Put(empty_storage_key, std::move(entity_data),
+  const auto result =
+      commit_callbacks_.emplace(GetClientTagHashFromStorageKey(message_id),
+                                std::move(on_commit_callback));
+  DCHECK(result.second);
+  change_processor()->Put(message_id, std::move(entity_data),
                           metadata_change_list.get());
 }
 
+base::WeakPtr<syncer::ModelTypeControllerDelegate>
+SharingMessageBridgeImpl::GetControllerDelegate() {
+  return change_processor()->GetControllerDelegate();
+}
+
 std::unique_ptr<syncer::MetadataChangeList>
 SharingMessageBridgeImpl::CreateMetadataChangeList() {
   // The data type intentionally doesn't persist the data on disk, so metadata
@@ -62,9 +84,17 @@
 
 base::Optional<syncer::ModelError> SharingMessageBridgeImpl::ApplySyncChanges(
     std::unique_ptr<syncer::MetadataChangeList> metadata_change_list,
-    syncer::EntityChangeList entity_data) {
-  // This data type is commit only and does not store any data in persistent
-  // storage. We can ignore any data coming from the server.
+    syncer::EntityChangeList entity_changes) {
+  sync_pb::SharingMessageCommitError no_error_message;
+  no_error_message.set_error_code(sync_pb::SharingMessageCommitError::NONE);
+  for (const std::unique_ptr<syncer::EntityChange>& change : entity_changes) {
+    // For commit-only data type we expect only |ACTION_DELETE| changes.
+    DCHECK_EQ(syncer::EntityChange::ACTION_DELETE, change->type());
+
+    const syncer::ClientTagHash client_tag_hash =
+        GetClientTagHashFromStorageKey(change->storage_key());
+    ProcessCommitResponse(client_tag_hash, no_error_message);
+  }
   return {};
 }
 
@@ -86,16 +116,30 @@
 
 std::string SharingMessageBridgeImpl::GetStorageKey(
     const syncer::EntityData& entity_data) {
-  NOTREACHED();
-  return "";
+  DCHECK(entity_data.specifics.has_sharing_message());
+  return entity_data.specifics.sharing_message().message_id();
 }
 
-// This is commit-only data type without storing any data on persistent storage.
-// We do not need keys here.
-bool SharingMessageBridgeImpl::SupportsGetClientTag() const {
-  return false;
+void SharingMessageBridgeImpl::OnCommitAttemptErrors(
+    const syncer::FailedCommitResponseDataList& error_response_list) {
+  for (const syncer::FailedCommitResponseData& response : error_response_list) {
+    // TODO(rushans): untrack entity in change processor on error. We cannot
+    // untrack it by only client tag hash and there is no storage key in
+    // response data.
+    ProcessCommitResponse(response.client_tag_hash,
+                          response.sharing_message_error);
+  }
 }
 
-bool SharingMessageBridgeImpl::SupportsGetStorageKey() const {
-  return false;
+void SharingMessageBridgeImpl::ProcessCommitResponse(
+    const syncer::ClientTagHash& client_tag_hash,
+    const sync_pb::SharingMessageCommitError& commit_error_message) {
+  const auto iter = commit_callbacks_.find(client_tag_hash);
+  if (iter == commit_callbacks_.end()) {
+    // TODO(crbug.com/1034930): mark as NOTREACHABLE() when the entity will be
+    // untracked on commit errors.
+    return;
+  }
+  std::move(iter->second).Run(commit_error_message);
+  commit_callbacks_.erase(iter);
 }
diff --git a/chrome/browser/sharing/sharing_message_bridge_impl.h b/chrome/browser/sharing/sharing_message_bridge_impl.h
index 2ee91a9..91aa4e9 100644
--- a/chrome/browser/sharing/sharing_message_bridge_impl.h
+++ b/chrome/browser/sharing/sharing_message_bridge_impl.h
@@ -25,7 +25,10 @@
 
   // SharingMessageBridge implementation.
   void SendSharingMessage(
-      std::unique_ptr<sync_pb::SharingMessageSpecifics> specifics) override;
+      std::unique_ptr<sync_pb::SharingMessageSpecifics> specifics,
+      CommitFinishedCallback on_commit_callback) override;
+  base::WeakPtr<syncer::ModelTypeControllerDelegate> GetControllerDelegate()
+      override;
 
   // ModelTypeSyncBridge implementation.
   std::unique_ptr<syncer::MetadataChangeList> CreateMetadataChangeList()
@@ -40,8 +43,21 @@
   void GetAllDataForDebugging(DataCallback callback) override;
   std::string GetClientTag(const syncer::EntityData& entity_data) override;
   std::string GetStorageKey(const syncer::EntityData& entity_data) override;
-  bool SupportsGetClientTag() const override;
-  bool SupportsGetStorageKey() const override;
+  void OnCommitAttemptErrors(
+      const syncer::FailedCommitResponseDataList& error_response_list) override;
+
+  size_t GetCallbacksCountForTesting() const {
+    return commit_callbacks_.size();
+  }
+
+ private:
+  // Sends commit outcome via callback for |client_tag_hash| and removes it from
+  // callbacks mapping.
+  void ProcessCommitResponse(
+      const syncer::ClientTagHash& client_tag_hash,
+      const sync_pb::SharingMessageCommitError& commit_error);
+
+  std::map<syncer::ClientTagHash, CommitFinishedCallback> commit_callbacks_;
 };
 
 #endif  // CHROME_BROWSER_SHARING_SHARING_MESSAGE_BRIDGE_IMPL_H_
diff --git a/chrome/browser/sharing/sharing_message_bridge_impl_unittest.cc b/chrome/browser/sharing/sharing_message_bridge_impl_unittest.cc
index d1bacc2..4b2b7c4 100644
--- a/chrome/browser/sharing/sharing_message_bridge_impl_unittest.cc
+++ b/chrome/browser/sharing/sharing_message_bridge_impl_unittest.cc
@@ -4,9 +4,12 @@
 
 #include "chrome/browser/sharing/sharing_message_bridge_impl.h"
 
+#include "base/bind_helpers.h"
 #include "base/run_loop.h"
+#include "base/test/mock_callback.h"
 #include "base/test/task_environment.h"
 #include "components/sync/model/metadata_batch.h"
+#include "components/sync/model/metadata_change_list.h"
 #include "components/sync/model/mock_model_type_change_processor.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -56,26 +59,91 @@
   syncer::EntityData entity_data;
   EXPECT_CALL(*processor(), Put(_, _, _))
       .WillRepeatedly(SaveArgPointeeMove<1>(&entity_data));
-  bridge()->SendSharingMessage(CreateSpecifics("test_payload"));
+  bridge()->SendSharingMessage(CreateSpecifics("test_payload"),
+                               base::DoNothing());
 
   EXPECT_TRUE(entity_data.specifics.has_sharing_message());
   EXPECT_EQ(entity_data.specifics.sharing_message().payload(), "test_payload");
 
   entity_data.specifics.Clear();
-  bridge()->SendSharingMessage(CreateSpecifics("another_payload"));
+  bridge()->SendSharingMessage(CreateSpecifics("another_payload"),
+                               base::DoNothing());
 
   EXPECT_TRUE(entity_data.specifics.has_sharing_message());
   EXPECT_EQ(entity_data.specifics.sharing_message().payload(),
             "another_payload");
+  EXPECT_FALSE(bridge()->GetStorageKey(entity_data).empty());
 }
 
-TEST_F(SharingMessageBridgeTest, ShouldNotGenerateStorageKey) {
+TEST_F(SharingMessageBridgeTest, ShouldGenerateUniqueStorageKey) {
+  std::string first_storage_key;
+  std::string second_storage_key;
+  EXPECT_CALL(*processor(), Put(_, _, _))
+      .WillOnce(SaveArg<0>(&first_storage_key))
+      .WillOnce(SaveArg<0>(&second_storage_key));
+  bridge()->SendSharingMessage(CreateSpecifics("payload"), base::DoNothing());
+  bridge()->SendSharingMessage(CreateSpecifics("another_payload"),
+                               base::DoNothing());
+
+  EXPECT_FALSE(first_storage_key.empty());
+  EXPECT_FALSE(second_storage_key.empty());
+  EXPECT_NE(first_storage_key, second_storage_key);
+}
+
+TEST_F(SharingMessageBridgeTest, ShouldInvokeCallbackOnSuccess) {
   std::string storage_key;
   EXPECT_CALL(*processor(), Put(_, _, _)).WillOnce(SaveArg<0>(&storage_key));
-  bridge()->SendSharingMessage(
-      std::make_unique<sync_pb::SharingMessageSpecifics>());
 
-  EXPECT_TRUE(storage_key.empty());
+  base::MockCallback<SharingMessageBridge::CommitFinishedCallback> callback;
+  sync_pb::SharingMessageCommitError commit_error;
+  EXPECT_CALL(callback, Run).WillOnce(SaveArg<0>(&commit_error));
+
+  bridge()->SendSharingMessage(CreateSpecifics("payload"), callback.Get());
+
+  // The callback should be called only after committing data.
+  EXPECT_FALSE(commit_error.has_error_code());
+
+  // Mark data as committed.
+  syncer::EntityChangeList change_list;
+  change_list.push_back(syncer::EntityChange::CreateDelete(storage_key));
+  bridge()->ApplySyncChanges(nullptr, std::move(change_list));
+
+  EXPECT_TRUE(commit_error.has_error_code());
+  EXPECT_EQ(commit_error.error_code(),
+            sync_pb::SharingMessageCommitError::NONE);
+  EXPECT_EQ(bridge()->GetCallbacksCountForTesting(), 0u);
+}
+
+TEST_F(SharingMessageBridgeTest, ShouldInvokeCallbackOnFailure) {
+  syncer::EntityData entity_data;
+  EXPECT_CALL(*processor(), Put(_, _, _))
+      .WillRepeatedly(SaveArgPointeeMove<1>(&entity_data));
+
+  base::MockCallback<SharingMessageBridge::CommitFinishedCallback> callback;
+  sync_pb::SharingMessageCommitError commit_error;
+  EXPECT_CALL(callback, Run).WillOnce(SaveArg<0>(&commit_error));
+
+  bridge()->SendSharingMessage(CreateSpecifics("payload"), callback.Get());
+
+  EXPECT_FALSE(entity_data.client_tag_hash.value().empty());
+
+  // The callback should be called only after committing data.
+  EXPECT_FALSE(commit_error.has_error_code());
+
+  syncer::FailedCommitResponseDataList response_list;
+  {
+    syncer::FailedCommitResponseData response;
+    response.client_tag_hash = entity_data.client_tag_hash;
+    response.sharing_message_error.set_error_code(
+        sync_pb::SharingMessageCommitError::PERMISSION_DENIED);
+    response_list.push_back(std::move(response));
+  }
+  bridge()->OnCommitAttemptErrors(response_list);
+
+  EXPECT_TRUE(commit_error.has_error_code());
+  EXPECT_EQ(commit_error.error_code(),
+            sync_pb::SharingMessageCommitError::PERMISSION_DENIED);
+  EXPECT_EQ(bridge()->GetCallbacksCountForTesting(), 0u);
 }
 
 }  // namespace
diff --git a/chrome/browser/sharing/sharing_message_sender_unittest.cc b/chrome/browser/sharing/sharing_message_sender_unittest.cc
index 6b27964..1c2e8bef 100644
--- a/chrome/browser/sharing/sharing_message_sender_unittest.cc
+++ b/chrome/browser/sharing/sharing_message_sender_unittest.cc
@@ -29,8 +29,11 @@
 const char kFCMToken[] = "vapid_fcm_token";
 const char kAuthorizedEntity[] = "authorized_entity";
 const char kSenderVapidFcmToken[] = "sender_vapid_fcm_token";
-const char kSenderP256dh[] = "sender_p256dh";
-const char kSenderAuthSecret[] = "sender_auth_secret";
+const char kSenderVapidP256dh[] = "sender_vapid_p256dh";
+const char kSenderVapidAuthSecret[] = "sender_vapid_auth_secret";
+const char kSenderSenderIdFcmToken[] = "sender_sender_id_fcm_token";
+const char kSenderSenderIdP256dh[] = "sender_sender_id_p256dh";
+const char kSenderSenderIdAuthSecret[] = "sender_sender_id_auth_secret";
 const char kSenderMessageID[] = "sender_message_id";
 constexpr base::TimeDelta kTimeToLive = base::TimeDelta::FromSeconds(10);
 
@@ -75,8 +78,9 @@
 // static
 syncer::DeviceInfo::SharingInfo CreateLocalSharingInfo() {
   return syncer::DeviceInfo::SharingInfo(
-      {kSenderVapidFcmToken, kSenderP256dh, kSenderAuthSecret},
-      {"sender_id_fcm_token", "sender_id_p256dh", "sender_id_auth_secret"},
+      {kSenderVapidFcmToken, kSenderVapidP256dh, kSenderVapidAuthSecret},
+      {kSenderSenderIdFcmToken, kSenderSenderIdP256dh,
+       kSenderSenderIdAuthSecret},
       std::set<sync_pb::SharingSpecificFields::EnabledFeatures>());
 }
 
@@ -244,9 +248,15 @@
             message.sender_device_name());
         ASSERT_TRUE(local_device->sharing_info().has_value());
         auto& fcm_configuration = message.fcm_channel_configuration();
-        ASSERT_EQ(kSenderVapidFcmToken, fcm_configuration.fcm_token());
-        ASSERT_EQ(kSenderP256dh, fcm_configuration.p256dh());
-        ASSERT_EQ(kSenderAuthSecret, fcm_configuration.auth_secret());
+        ASSERT_EQ(kSenderVapidFcmToken, fcm_configuration.vapid_fcm_token());
+        ASSERT_EQ(kSenderVapidP256dh, fcm_configuration.vapid_p256dh());
+        ASSERT_EQ(kSenderVapidAuthSecret,
+                  fcm_configuration.vapid_auth_secret());
+        ASSERT_EQ(kSenderSenderIdFcmToken,
+                  fcm_configuration.sender_id_fcm_token());
+        ASSERT_EQ(kSenderSenderIdP256dh, fcm_configuration.sender_id_p256dh());
+        ASSERT_EQ(kSenderSenderIdAuthSecret,
+                  fcm_configuration.sender_id_auth_secret());
 
         // Simulate ack message received.
         std::unique_ptr<chrome_browser_sharing::ResponseMessage>
diff --git a/chrome/browser/sharing/webrtc/ice_config_fetcher.cc b/chrome/browser/sharing/webrtc/ice_config_fetcher.cc
new file mode 100644
index 0000000..aa582fa
--- /dev/null
+++ b/chrome/browser/sharing/webrtc/ice_config_fetcher.cc
@@ -0,0 +1,164 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/sharing/webrtc/ice_config_fetcher.h"
+
+#include "base/bind.h"
+#include "base/json/json_reader.h"
+#include "base/optional.h"
+#include "base/strings/strcat.h"
+#include "google_apis/google_api_keys.h"
+#include "net/base/load_flags.h"
+#include "services/network/public/cpp/shared_url_loader_factory.h"
+#include "services/network/public/cpp/simple_url_loader.h"
+
+namespace {
+const char kIceConfigApiUrl[] =
+    "https://networktraversal.googleapis.com/v1alpha/iceconfig?key=";
+
+// Response with 2 ice server configs takes ~1KB. A loose upper bound of 16KB is
+// chosen to avoid breaking the flow in case the response has longer URLs in ice
+// configs.
+constexpr int kMaxBodySize = 16 * 1024;
+
+const net::NetworkTrafficAnnotationTag kTrafficAnnotation =
+    net::DefineNetworkTrafficAnnotation("ice_config_fetcher", R"(
+        semantics {
+          sender: "IceConfigFetcher"
+          description:
+            "Fetches ice server configurations for p2p webrtc connection as "
+            "described in "
+            "https://www.w3.org/TR/webrtc/#rtciceserver-dictionary."
+          trigger:
+            "User uses any Chrome cross-device sharing feature and selects one"
+            " of their devices to send the data to."
+          data: "No data is sent in the request."
+          destination: GOOGLE_OWNED_SERVICE
+          }
+          policy {
+            cookies_allowed: NO
+            setting:
+              "Users can disable this behavior by signing out of Chrome."
+            chrome_policy {
+              BrowserSignin {
+                policy_options {mode: MANDATORY}
+                BrowserSignin: 0
+              }
+            }
+          })");
+
+bool IsLoaderSuccessful(const network::SimpleURLLoader* loader) {
+  if (!loader || loader->NetError() != net::OK)
+    return false;
+
+  if (!loader->ResponseInfo() || !loader->ResponseInfo()->headers)
+    return false;
+
+  // Success response codes are 2xx.
+  return (loader->ResponseInfo()->headers->response_code() / 100) == 2;
+}
+
+}  // namespace
+
+IceConfigFetcher::IceConfigFetcher(
+    scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory)
+    : url_loader_factory_(std::move(url_loader_factory)) {}
+
+IceConfigFetcher::~IceConfigFetcher() = default;
+
+void IceConfigFetcher::GetIceServers(IceServerCallback callback) {
+  url_loader_.reset();
+
+  auto resource_request = std::make_unique<network::ResourceRequest>();
+  resource_request->url =
+      GURL(base::StrCat({kIceConfigApiUrl, google_apis::GetSharingAPIKey()}));
+  resource_request->load_flags =
+      net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE;
+  resource_request->credentials_mode = network::mojom::CredentialsMode::kOmit;
+  resource_request->method = net::HttpRequestHeaders::kPostMethod;
+  resource_request->headers.SetHeader(net::HttpRequestHeaders::kContentType,
+                                      "application/json");
+
+  url_loader_ = network::SimpleURLLoader::Create(std::move(resource_request),
+                                                 kTrafficAnnotation);
+  url_loader_->DownloadToString(
+      url_loader_factory_.get(),
+      base::BindOnce(&IceConfigFetcher::OnIceServersResponse,
+                     weak_ptr_factory_.GetWeakPtr(), std::move(callback)),
+      kMaxBodySize);
+}
+
+void IceConfigFetcher::OnIceServersResponse(
+    IceServerCallback callback,
+    std::unique_ptr<std::string> response_body) {
+  std::vector<sharing::mojom::IceServerPtr> ice_servers;
+
+  if (IsLoaderSuccessful(url_loader_.get()) && response_body)
+    ice_servers = ParseIceConfigJson(*response_body);
+
+  if (ice_servers.empty())
+    ice_servers = GetDefaultIceServers();
+
+  std::move(callback).Run(std::move(ice_servers));
+}
+
+std::vector<sharing::mojom::IceServerPtr> IceConfigFetcher::ParseIceConfigJson(
+    std::string json) {
+  std::vector<sharing::mojom::IceServerPtr> ice_servers;
+  base::Optional<base::Value> response = base::JSONReader::Read(json);
+  if (!response)
+    return ice_servers;
+
+  base::Value* ice_servers_json = response->FindListKey("iceServers");
+  if (!ice_servers_json)
+    return ice_servers;
+
+  for (base::Value& server : ice_servers_json->GetList()) {
+    const base::Value* urls_json = server.FindListKey("urls");
+    if (!urls_json)
+      continue;
+
+    std::vector<GURL> urls;
+    for (const base::Value& url_json : urls_json->GetList()) {
+      std::string url;
+      if (!url_json.GetAsString(&url))
+        continue;
+
+      urls.emplace_back(url);
+    }
+
+    if (urls.empty())
+      continue;
+
+    sharing::mojom::IceServerPtr ice_server(sharing::mojom::IceServer::New());
+    ice_server->urls = std::move(urls);
+
+    std::string* retrieved_username = server.FindStringKey("username");
+    if (retrieved_username)
+      ice_server->username.emplace(std::move(*retrieved_username));
+
+    std::string* retrieved_credential = server.FindStringKey("credential");
+    if (retrieved_credential)
+      ice_server->credential.emplace(std::move(*retrieved_credential));
+
+    ice_servers.push_back(std::move(ice_server));
+  }
+
+  return ice_servers;
+}
+
+// static
+std::vector<sharing::mojom::IceServerPtr>
+IceConfigFetcher::GetDefaultIceServers() {
+  sharing::mojom::IceServerPtr ice_server(sharing::mojom::IceServer::New());
+  ice_server->urls.emplace_back("stun:stun.l.google.com:19302");
+  ice_server->urls.emplace_back("stun:stun1.l.google.com:19302");
+  ice_server->urls.emplace_back("stun:stun2.l.google.com:19302");
+  ice_server->urls.emplace_back("stun:stun3.l.google.com:19302");
+  ice_server->urls.emplace_back("stun:stun4.l.google.com:19302");
+
+  std::vector<sharing::mojom::IceServerPtr> default_servers;
+  default_servers.push_back(std::move(ice_server));
+  return default_servers;
+}
diff --git a/chrome/browser/sharing/webrtc/ice_config_fetcher.h b/chrome/browser/sharing/webrtc/ice_config_fetcher.h
new file mode 100644
index 0000000..630cca19
--- /dev/null
+++ b/chrome/browser/sharing/webrtc/ice_config_fetcher.h
@@ -0,0 +1,55 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_SHARING_WEBRTC_ICE_CONFIG_FETCHER_H_
+#define CHROME_BROWSER_SHARING_WEBRTC_ICE_CONFIG_FETCHER_H_
+
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "base/callback_forward.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/optional.h"
+#include "chrome/services/sharing/public/mojom/webrtc.mojom.h"
+#include "url/gurl.h"
+
+namespace network {
+class SharedURLLoaderFactory;
+class SimpleURLLoader;
+}  // namespace network
+
+class IceConfigFetcher {
+ public:
+  using IceServerCallback =
+      base::OnceCallback<void(std::vector<sharing::mojom::IceServerPtr>)>;
+
+  explicit IceConfigFetcher(
+      scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory);
+  ~IceConfigFetcher();
+
+  IceConfigFetcher(const IceConfigFetcher& other) = delete;
+  IceConfigFetcher& operator=(const IceConfigFetcher& other) = delete;
+
+  // TODO(himanshujaju) - Cache configs fetched from server.
+  void GetIceServers(IceServerCallback callback);
+
+ private:
+  void OnIceServersResponse(IceServerCallback callback,
+                            std::unique_ptr<std::string> response_body);
+
+  std::vector<sharing::mojom::IceServerPtr> ParseIceConfigJson(
+      std::string json);
+
+  // Returns public ice servers if API fails to respond.
+  static std::vector<sharing::mojom::IceServerPtr> GetDefaultIceServers();
+
+  scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
+  std::unique_ptr<network::SimpleURLLoader> url_loader_;
+
+  base::WeakPtrFactory<IceConfigFetcher> weak_ptr_factory_{this};
+};
+
+#endif  // CHROME_BROWSER_SHARING_WEBRTC_ICE_CONFIG_FETCHER_H_
diff --git a/chrome/browser/sharing/webrtc/ice_config_fetcher_unittest.cc b/chrome/browser/sharing/webrtc/ice_config_fetcher_unittest.cc
new file mode 100644
index 0000000..94768a5
--- /dev/null
+++ b/chrome/browser/sharing/webrtc/ice_config_fetcher_unittest.cc
@@ -0,0 +1,102 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/sharing/webrtc/ice_config_fetcher.h"
+
+#include "base/files/file_util.h"
+#include "base/path_service.h"
+#include "base/run_loop.h"
+#include "base/strings/strcat.h"
+#include "base/test/bind_test_util.h"
+#include "base/test/task_environment.h"
+#include "chrome/common/chrome_paths.h"
+#include "google_apis/google_api_keys.h"
+#include "services/network/public/cpp/shared_url_loader_factory.h"
+#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
+#include "services/network/test/test_url_loader_factory.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+class IceConfigFetcherTest : public testing::Test {
+ public:
+  IceConfigFetcherTest()
+      : test_shared_loader_factory_(
+            base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
+                &test_url_loader_factory_)),
+        ice_config_fetcher_(test_shared_loader_factory_) {}
+  ~IceConfigFetcherTest() override = default;
+
+  std::string GetApiUrl() const {
+    return base::StrCat(
+        {"https://networktraversal.googleapis.com/v1alpha/iceconfig?key=",
+         google_apis::GetSharingAPIKey()});
+  }
+
+  void CheckSuccessResponse(
+      const std::vector<sharing::mojom::IceServerPtr>& ice_servers) {
+    ASSERT_EQ(2u, ice_servers.size());
+
+    // First response doesnt have credentials.
+    ASSERT_EQ(1u, ice_servers[0]->urls.size());
+    ASSERT_FALSE(ice_servers[0]->username);
+    ASSERT_FALSE(ice_servers[0]->credential);
+
+    // Second response has credentials.
+    ASSERT_EQ(2u, ice_servers[1]->urls.size());
+    ASSERT_EQ("username", ice_servers[1]->username);
+    ASSERT_EQ("credential", ice_servers[1]->credential);
+  }
+
+  void GetSuccessResponse(std::string* response) const {
+    base::FilePath path;
+    ASSERT_TRUE(base::PathService::Get(chrome::DIR_TEST_DATA, &path));
+    path = path.AppendASCII("sharing");
+    ASSERT_TRUE(base::PathExists(path));
+    ASSERT_TRUE(base::ReadFileToString(
+        path.AppendASCII("network_traversal_response.json"), response));
+  }
+
+ protected:
+  base::test::SingleThreadTaskEnvironment task_environment_;
+  network::TestURLLoaderFactory test_url_loader_factory_;
+  scoped_refptr<network::SharedURLLoaderFactory> test_shared_loader_factory_;
+  IceConfigFetcher ice_config_fetcher_;
+};
+
+TEST_F(IceConfigFetcherTest, ResponseSuccessful) {
+  base::RunLoop run_loop;
+  ice_config_fetcher_.GetIceServers(base::BindLambdaForTesting(
+      [&](std::vector<sharing::mojom::IceServerPtr> ice_servers) {
+        CheckSuccessResponse(ice_servers);
+        run_loop.Quit();
+      }));
+
+  const std::string expected_api_url = GetApiUrl();
+  std::string response;
+  GetSuccessResponse(&response);
+
+  ASSERT_TRUE(test_url_loader_factory_.IsPending(expected_api_url, nullptr));
+
+  test_url_loader_factory_.AddResponse(expected_api_url, response,
+                                       net::HTTP_OK);
+  run_loop.Run();
+}
+
+TEST_F(IceConfigFetcherTest, ResponseError) {
+  base::RunLoop run_loop;
+  ice_config_fetcher_.GetIceServers(base::BindLambdaForTesting(
+      [&](std::vector<sharing::mojom::IceServerPtr> ice_servers) {
+        // Makes sure that we at least return default servers in case of an
+        // error.
+        EXPECT_FALSE(ice_servers.empty());
+        run_loop.Quit();
+      }));
+
+  const std::string expected_api_url = GetApiUrl();
+  ASSERT_TRUE(test_url_loader_factory_.IsPending(expected_api_url, nullptr));
+
+  test_url_loader_factory_.AddResponse(expected_api_url, "",
+                                       net::HTTP_INTERNAL_SERVER_ERROR);
+  run_loop.Run();
+}
diff --git a/chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc b/chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc
index 737b894c..8dd8a6d 100644
--- a/chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc
+++ b/chrome/browser/ssl/captive_portal_blocking_page_browsertest.cc
@@ -31,7 +31,7 @@
 #include "chrome/common/pref_names.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
-#include "components/captive_portal/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
 #include "components/prefs/pref_service.h"
 #include "components/security_interstitials/content/cert_report_helper.h"
 #include "components/security_interstitials/content/security_interstitial_tab_helper.h"
diff --git a/chrome/browser/ssl/captive_portal_metrics_recorder.cc b/chrome/browser/ssl/captive_portal_metrics_recorder.cc
index e76e063..3fae622b 100644
--- a/chrome/browser/ssl/captive_portal_metrics_recorder.cc
+++ b/chrome/browser/ssl/captive_portal_metrics_recorder.cc
@@ -8,11 +8,8 @@
 
 #include "base/metrics/histogram_macros.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/captive_portal/captive_portal_service.h"
 #include "chrome/browser/captive_portal/captive_portal_service_factory.h"
-#include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/profiles/profile.h"
-#include "content/public/browser/notification_service.h"
 #include "content/public/browser/web_contents.h"
 
 namespace {
@@ -50,8 +47,10 @@
       Profile::FromBrowserContext(web_contents->GetBrowserContext());
   captive_portal_detection_enabled_ =
       CaptivePortalServiceFactory::GetForProfile(profile)->enabled();
-  registrar_.Add(this, chrome::NOTIFICATION_CAPTIVE_PORTAL_CHECK_RESULT,
-                 content::Source<content::BrowserContext>(profile));
+  subscription_ =
+      CaptivePortalServiceFactory::GetForProfile(profile)->RegisterCallback(
+          base::Bind(&CaptivePortalMetricsRecorder::Observe,
+                     base::Unretained(this)));
 }
 
 CaptivePortalMetricsRecorder::~CaptivePortalMetricsRecorder() = default;
@@ -78,19 +77,13 @@
 }
 
 void CaptivePortalMetricsRecorder::Observe(
-    int type,
-    const content::NotificationSource& source,
-    const content::NotificationDetails& details) {
-  DCHECK_EQ(chrome::NOTIFICATION_CAPTIVE_PORTAL_CHECK_RESULT, type);
-
+    const CaptivePortalService::Results& results) {
   // When detection is disabled, captive portal service always sends
   // RESULT_INTERNET_CONNECTED. Ignore any probe results in that case.
   if (!captive_portal_detection_enabled_)
     return;
 
   captive_portal_probe_completed_ = true;
-  CaptivePortalService::Results* results =
-      content::Details<CaptivePortalService::Results>(details).ptr();
   // If a captive portal was detected at any point when the interstitial was
   // displayed, assume that the interstitial was caused by a captive portal.
   // Example scenario:
@@ -102,9 +95,9 @@
   // potentially caused by the captive portal.
   captive_portal_detected_ =
       captive_portal_detected_ ||
-      (results->result == captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
+      (results.result == captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
   // Also keep track of non-HTTP portals and error cases.
   captive_portal_no_response_ =
       captive_portal_no_response_ ||
-      (results->result == captive_portal::RESULT_NO_RESPONSE);
+      (results.result == captive_portal::RESULT_NO_RESPONSE);
 }
diff --git a/chrome/browser/ssl/captive_portal_metrics_recorder.h b/chrome/browser/ssl/captive_portal_metrics_recorder.h
index 34a885d2..f9d011db 100644
--- a/chrome/browser/ssl/captive_portal_metrics_recorder.h
+++ b/chrome/browser/ssl/captive_portal_metrics_recorder.h
@@ -9,8 +9,7 @@
 #include <vector>
 
 #include "base/time/time.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 #include "net/cert/x509_certificate.h"
 #include "url/gurl.h"
 
@@ -22,11 +21,11 @@
 // metrics. It should only be used on the UI thread because its implementation
 // uses captive_portal::CaptivePortalService which can only be accessed on the
 // UI thread.
-class CaptivePortalMetricsRecorder : public content::NotificationObserver {
+class CaptivePortalMetricsRecorder {
  public:
   CaptivePortalMetricsRecorder(content::WebContents* web_contents,
                                bool overridable);
-  ~CaptivePortalMetricsRecorder() override;
+  ~CaptivePortalMetricsRecorder();
 
   // Should be called when the interstitial is closing.
   void RecordCaptivePortalUMAStatistics() const;
@@ -34,10 +33,7 @@
  private:
   typedef std::vector<std::string> Tokens;
 
-  // content::NotificationObserver:
-  void Observe(int type,
-               const content::NotificationSource& source,
-               const content::NotificationDetails& details) override;
+  void Observe(const CaptivePortalService::Results& results);
 
   bool overridable_;
   bool captive_portal_detection_enabled_;
@@ -47,7 +43,7 @@
   bool captive_portal_no_response_;
   bool captive_portal_detected_;
 
-  content::NotificationRegistrar registrar_;
+  std::unique_ptr<CaptivePortalService::Subscription> subscription_;
 };
 
 #endif  // CHROME_BROWSER_SSL_CAPTIVE_PORTAL_METRICS_RECORDER_H_
diff --git a/chrome/browser/ssl/ssl_error_handler.cc b/chrome/browser/ssl/ssl_error_handler.cc
index 1692bda3..646d382 100644
--- a/chrome/browser/ssl/ssl_error_handler.cc
+++ b/chrome/browser/ssl/ssl_error_handler.cc
@@ -21,13 +21,12 @@
 #include "base/time/clock.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
-#include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/captive_portal/captive_portal_service_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ssl/captive_portal_helper.h"
 #include "chrome/browser/ssl/chrome_security_blocking_page_factory.h"
 #include "chrome/browser/ssl/ssl_error_assistant.h"
-#include "chrome/common/pref_names.h"
-#include "components/captive_portal/buildflags.h"
+#include "components/captive_portal/core/buildflags.h"
 #include "components/network_time/network_time_tracker.h"
 #include "components/prefs/pref_service.h"
 #include "components/security_interstitials/content/bad_clock_blocking_page.h"
@@ -54,17 +53,9 @@
 #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h"
 
 #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION)
-#include "chrome/browser/captive_portal/captive_portal_service.h"
-#include "chrome/browser/captive_portal/captive_portal_service_factory.h"
 #include "chrome/browser/captive_portal/captive_portal_tab_helper.h"
 #endif
 
-#if defined(OS_WIN)
-#include "base/enterprise_util.h"
-#elif defined(OS_CHROMEOS)
-#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
-#endif  // #if defined(OS_WIN)
-
 #if defined(OS_ANDROID)
 #include "base/android/jni_android.h"
 #include "chrome/browser/ssl/captive_portal_helper_android.h"
@@ -551,24 +542,19 @@
     const net::SSLInfo& ssl_info,
     const GURL& request_url,
     std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
-    network_time::NetworkTimeTracker* network_time_tracker,
     base::OnceCallback<
         void(std::unique_ptr<security_interstitials::SecurityInterstitialPage>)>
-        blocking_page_ready_callback) {
+        blocking_page_ready_callback,
+    network_time::NetworkTimeTracker* network_time_tracker,
+    bool user_can_proceed_past_interstitial /*=true*/) {
   DCHECK(!FromWebContents(web_contents));
 
   Profile* profile =
       Profile::FromBrowserContext(web_contents->GetBrowserContext());
+  DCHECK(profile);
 
-  // This can happen if GetBrowserContext no longer exist by the time this gets
-  // called (e.g. the SSL error was in a webview that has since been destroyed),
-  // if that's the case we don't need to handle the error (and will crash if we
-  // attempt to).
-  if (!profile)
-    return;
+  bool hard_override_disabled = !user_can_proceed_past_interstitial;
 
-  bool hard_override_disabled =
-      !profile->GetPrefs()->GetBoolean(prefs::kSSLErrorOverrideAllowed);
   int options_mask = security_interstitials::CalculateSSLErrorOptionsMask(
       cert_error, hard_override_disabled, ssl_info.is_fatal_cert_error);
 
@@ -579,8 +565,7 @@
               request_url, std::move(ssl_cert_reporter),
               g_config.Pointer()->on_blocking_page_shown_callback(),
               std::move(blocking_page_ready_callback))),
-      web_contents, profile, cert_error, ssl_info, network_time_tracker,
-      request_url);
+      web_contents, cert_error, ssl_info, network_time_tracker, request_url);
   web_contents->SetUserData(UserDataKey(), base::WrapUnique(error_handler));
   error_handler->StartHandlingError();
 }
@@ -650,7 +635,6 @@
 SSLErrorHandler::SSLErrorHandler(
     std::unique_ptr<Delegate> delegate,
     content::WebContents* web_contents,
-    Profile* profile,
     int cert_error,
     const net::SSLInfo& ssl_info,
     network_time::NetworkTimeTracker* network_time_tracker,
@@ -658,7 +642,6 @@
     : content::WebContentsObserver(web_contents),
       delegate_(std::move(delegate)),
       web_contents_(web_contents),
-      profile_(profile),
       cert_error_(cert_error),
       ssl_info_(ssl_info),
       request_url_(request_url),
@@ -770,13 +753,13 @@
     }
   }
 
-  // Always listen to captive portal notifications, otherwise build fails
-  // because profile_ isn't used. This is a no-op on platforms where
-  // captive portal detection is disabled.
-  registrar_.Add(this, chrome::NOTIFICATION_CAPTIVE_PORTAL_CHECK_RESULT,
-                 content::Source<content::BrowserContext>(profile_));
-
 #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION)
+  Profile* profile =
+      Profile::FromBrowserContext(web_contents_->GetBrowserContext());
+  subscription_ =
+      CaptivePortalServiceFactory::GetForProfile(profile)->RegisterCallback(
+          base::Bind(&SSLErrorHandler::Observe, base::Unretained(this)));
+
   CaptivePortalTabHelper* captive_portal_tab_helper =
       CaptivePortalTabHelper::FromWebContents(web_contents_);
   if (captive_portal_tab_helper) {
@@ -886,18 +869,11 @@
   }
 }
 
-void SSLErrorHandler::Observe(
-    int type,
-    const content::NotificationSource& source,
-    const content::NotificationDetails& details) {
+void SSLErrorHandler::Observe(const CaptivePortalService::Results& results) {
 #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION)
-  DCHECK_EQ(chrome::NOTIFICATION_CAPTIVE_PORTAL_CHECK_RESULT, type);
-
   timer_.Stop();
-  CaptivePortalService::Results* results =
-      content::Details<CaptivePortalService::Results>(details).ptr();
-  if (results->result == captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL)
-    ShowCaptivePortalInterstitial(results->landing_url);
+  if (results.result == captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL)
+    ShowCaptivePortalInterstitial(results.landing_url);
   else
     ShowSSLInterstitial();
 #else
diff --git a/chrome/browser/ssl/ssl_error_handler.h b/chrome/browser/ssl/ssl_error_handler.h
index ea64f26..7aa2a52c 100644
--- a/chrome/browser/ssl/ssl_error_handler.h
+++ b/chrome/browser/ssl/ssl_error_handler.h
@@ -12,14 +12,13 @@
 #include "base/macros.h"
 #include "base/memory/weak_ptr.h"
 #include "base/timer/timer.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 #include "components/security_interstitials/content/common_name_mismatch_handler.h"
 #include "components/security_interstitials/content/security_interstitial_page.h"
 #include "components/security_interstitials/content/ssl_cert_reporter.h"
 #include "components/security_interstitials/content/ssl_error_assistant.pb.h"
 #include "components/ssl_errors/error_classification.h"
 #include "content/public/browser/certificate_request_result_type.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
 #include "content/public/browser/restore_type.h"
 #include "content/public/browser/web_contents_observer.h"
 #include "content/public/browser/web_contents_user_data.h"
@@ -27,7 +26,6 @@
 #include "url/gurl.h"
 
 class CommonNameMismatchHandler;
-class Profile;
 struct DynamicInterstitialInfo;
 
 namespace base {
@@ -67,8 +65,7 @@
 // uses captive_portal::CaptivePortalService which can only be accessed on the
 // UI thread.
 class SSLErrorHandler : public content::WebContentsUserData<SSLErrorHandler>,
-                        public content::WebContentsObserver,
-                        public content::NotificationObserver {
+                        public content::WebContentsObserver {
  public:
   typedef base::Callback<void(content::WebContents*)> TimerStartedCallback;
   typedef base::OnceCallback<void(
@@ -131,22 +128,27 @@
     virtual bool HasBlockedInterception() const = 0;
   };
 
-  // Entry point for the class. All parameters except
-  // |blocking_page_ready_callback| are the same as SSLBlockingPage constructor.
+  // Entry point for the class. Most parameters are the same as
+  // SSLBlockingPage constructor.
+  // Extra parameters:
   // |blocking_page_ready_callback| is intended for committed interstitials. If
   // |blocking_page_ready_callback| is null, this function will create a
   // blocking page and call Show() on it. Otherwise, this function creates an
   // interstitial and passes it to |blocking_page_ready_callback|.
   // |blocking_page_ready_callback| is guaranteed not to be called
   // synchronously.
+  // |user_can_proceed_past_interstitial| can be given a value of false to
+  // change the default behavior of giving users the option to proceed past
+  // SSL error interstitials.
   static void HandleSSLError(
       content::WebContents* web_contents,
       int cert_error,
       const net::SSLInfo& ssl_info,
       const GURL& request_url,
       std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
+      BlockingPageReadyCallback blocking_page_ready_callback,
       network_time::NetworkTimeTracker* network_time_tracker,
-      BlockingPageReadyCallback blocking_page_ready_callback);
+      bool user_can_proceed_past_interstitial = true);
 
   // Sets the binary proto for SSL error assistant. The binary proto
   // can be downloaded by the component updater, or set by tests.
@@ -179,7 +181,6 @@
  protected:
   SSLErrorHandler(std::unique_ptr<Delegate> delegate,
                   content::WebContents* web_contents,
-                  Profile* profile,
                   int cert_error,
                   const net::SSLInfo& ssl_info,
                   network_time::NetworkTimeTracker* network_time_tracker,
@@ -193,6 +194,10 @@
  private:
   friend class content::WebContentsUserData<SSLErrorHandler>;
   FRIEND_TEST_ALL_PREFIXES(SSLErrorHandlerTest, CalculateOptionsMask);
+  FRIEND_TEST_ALL_PREFIXES(SSLErrorHandlerNameMismatchTest,
+                           ShouldShowCustomInterstitialOnCaptivePortalResult);
+  FRIEND_TEST_ALL_PREFIXES(SSLErrorHandlerNameMismatchTest,
+                           ShouldShowSSLInterstitialOnNoCaptivePortalResult);
 
   void ShowCaptivePortalInterstitial(const GURL& landing_url);
   void ShowMITMSoftwareInterstitial(const std::string& mitm_software_name);
@@ -208,11 +213,8 @@
       CommonNameMismatchHandler::SuggestedUrlCheckResult result,
       const GURL& suggested_url);
 
-  // content::NotificationObserver:
-  void Observe(
-      int type,
-      const content::NotificationSource& source,
-      const content::NotificationDetails& details) override;
+  // Callback invoked with the result of a query for captive portal status.
+  void Observe(const CaptivePortalService::Results& results);
 
   // content::WebContentsObserver:
   void DidStartNavigation(
@@ -232,13 +234,13 @@
 
   std::unique_ptr<Delegate> delegate_;
   content::WebContents* const web_contents_;
-  Profile* const profile_;
   const int cert_error_;
   const net::SSLInfo ssl_info_;
   const GURL request_url_;
   network_time::NetworkTimeTracker* network_time_tracker_;
 
-  content::NotificationRegistrar registrar_;
+  std::unique_ptr<CaptivePortalService::Subscription> subscription_;
+
   base::OneShotTimer timer_;
 
   std::unique_ptr<CommonNameMismatchHandler> common_name_mismatch_handler_;
diff --git a/chrome/browser/ssl/ssl_error_handler_unittest.cc b/chrome/browser/ssl/ssl_error_handler_unittest.cc
index 149b7ba..5f7d8c0 100644
--- a/chrome/browser/ssl/ssl_error_handler_unittest.cc
+++ b/chrome/browser/ssl/ssl_error_handler_unittest.cc
@@ -18,15 +18,14 @@
 #include "base/test/simple_test_tick_clock.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
-#include "chrome/browser/captive_portal/captive_portal_service.h"
-#include "chrome/browser/chrome_notification_types.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/ssl/ssl_error_assistant.h"
 #include "chrome/browser/ssl/ssl_error_handler.h"
 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
 #include "chrome/test/base/testing_profile.h"
-#include "components/captive_portal/buildflags.h"
-#include "components/captive_portal/captive_portal_testing_utils.h"
+#include "components/captive_portal/content/captive_portal_service.h"
+#include "components/captive_portal/core/buildflags.h"
+#include "components/captive_portal/core/captive_portal_testing_utils.h"
 #include "components/network_time/network_time_test_utils.h"
 #include "components/network_time/network_time_tracker.h"
 #include "components/prefs/testing_pref_service.h"
@@ -36,7 +35,6 @@
 #include "components/security_interstitials/core/ssl_error_ui.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
-#include "content/public/browser/notification_service.h"
 #include "net/base/net_errors.h"
 #include "net/cert/cert_status_flags.h"
 #include "net/cert/x509_certificate.h"
@@ -135,14 +133,12 @@
  public:
   TestSSLErrorHandler(std::unique_ptr<Delegate> delegate,
                       content::WebContents* web_contents,
-                      Profile* profile,
                       int cert_error,
                       const net::SSLInfo& ssl_info,
                       network_time::NetworkTimeTracker* network_time_tracker,
                       const GURL& request_url)
       : SSLErrorHandler(std::move(delegate),
                         web_contents,
-                        profile,
                         cert_error,
                         ssl_info,
                         network_time_tracker,
@@ -153,11 +149,9 @@
 
 class TestSSLErrorHandlerDelegate : public SSLErrorHandler::Delegate {
  public:
-  TestSSLErrorHandlerDelegate(Profile* profile,
-                              content::WebContents* web_contents,
+  TestSSLErrorHandlerDelegate(content::WebContents* web_contents,
                               const net::SSLInfo& ssl_info)
-      : profile_(profile),
-        captive_portal_checked_(false),
+      : captive_portal_checked_(false),
         os_reports_captive_portal_(false),
         suggested_url_exists_(false),
         suggested_url_checked_(false),
@@ -170,17 +164,6 @@
         is_overridable_error_(true),
         has_blocked_interception_(false) {}
 
-  void SendCaptivePortalNotification(
-      captive_portal::CaptivePortalResult result) {
-    CaptivePortalService::Results results;
-    results.previous_result = captive_portal::RESULT_INTERNET_CONNECTED;
-    results.result = result;
-    content::NotificationService::current()->Notify(
-        chrome::NOTIFICATION_CAPTIVE_PORTAL_CHECK_RESULT,
-        content::Source<content::BrowserContext>(profile_),
-        content::Details<CaptivePortalService::Results>(&results));
-  }
-
   void SendSuggestedUrlCheckResult(
       const CommonNameMismatchHandler::SuggestedUrlCheckResult& result,
       const GURL& suggested_url) {
@@ -283,7 +266,6 @@
     return has_blocked_interception_;
   }
 
-  Profile* profile_;
   bool captive_portal_checked_;
   bool os_reports_captive_portal_;
   bool suggested_url_exists_;
@@ -319,12 +301,11 @@
     ssl_info_.public_key_hashes.push_back(
         net::HashValue(kCertPublicKeyHashValue));
 
-    delegate_ =
-        new TestSSLErrorHandlerDelegate(profile(), web_contents(), ssl_info_);
+    delegate_ = new TestSSLErrorHandlerDelegate(web_contents(), ssl_info_);
     error_handler_.reset(new TestSSLErrorHandler(
         std::unique_ptr<SSLErrorHandler::Delegate>(delegate_), web_contents(),
-        profile(), net::MapCertStatusToNetError(ssl_info_.cert_status),
-        ssl_info_, /*network_time_tracker=*/nullptr, GURL() /*request_url*/));
+        net::MapCertStatusToNetError(ssl_info_.cert_status), ssl_info_,
+        /*network_time_tracker=*/nullptr, GURL() /*request_url*/));
   }
 
   void TearDown() override {
@@ -581,12 +562,11 @@
     ssl_info_.public_key_hashes.push_back(
         net::HashValue(kCertPublicKeyHashValue));
 
-    delegate_ =
-        new TestSSLErrorHandlerDelegate(profile(), web_contents(), ssl_info_);
+    delegate_ = new TestSSLErrorHandlerDelegate(web_contents(), ssl_info_);
     error_handler_.reset(new TestSSLErrorHandler(
         std::unique_ptr<SSLErrorHandler::Delegate>(delegate_), web_contents(),
-        profile(), net::MapCertStatusToNetError(ssl_info_.cert_status),
-        ssl_info_, /*network_time_tracker=*/nullptr, GURL() /*request_url*/));
+        net::MapCertStatusToNetError(ssl_info_.cert_status), ssl_info_,
+        /*network_time_tracker=*/nullptr, GURL() /*request_url*/));
   }
 
   net::SSLInfo ssl_info_;
@@ -642,12 +622,11 @@
         net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem");
     ssl_info_.cert_status = net::CERT_STATUS_DATE_INVALID;
 
-    delegate_ =
-        new TestSSLErrorHandlerDelegate(profile(), web_contents(), ssl_info_);
+    delegate_ = new TestSSLErrorHandlerDelegate(web_contents(), ssl_info_);
     error_handler_.reset(new TestSSLErrorHandler(
         std::unique_ptr<SSLErrorHandler::Delegate>(delegate_), web_contents(),
-        profile(), net::MapCertStatusToNetError(ssl_info_.cert_status),
-        ssl_info_, tracker_.get(), GURL() /*request_url*/));
+        net::MapCertStatusToNetError(ssl_info_.cert_status), ssl_info_,
+        tracker_.get(), GURL() /*request_url*/));
 
     // Fix flakiness in case system time is off and triggers a bad clock
     // interstitial. https://crbug.com/666821#c50
@@ -753,8 +732,12 @@
   EXPECT_FALSE(delegate()->captive_portal_interstitial_shown());
   // Fake a captive portal result.
   delegate()->ClearSeenOperations();
-  delegate()->SendCaptivePortalNotification(
-      captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
+
+  CaptivePortalService::Results results;
+  results.previous_result = captive_portal::RESULT_INTERNET_CONNECTED;
+  results.result = captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL;
+
+  error_handler()->Observe(results);
   base::RunLoop().RunUntilIdle();
 
   EXPECT_FALSE(error_handler()->IsTimerRunningForTesting());
@@ -784,8 +767,12 @@
   // This should immediately trigger an SSL interstitial without waiting for
   // the timer to expire.
   delegate()->ClearSeenOperations();
-  delegate()->SendCaptivePortalNotification(
-      captive_portal::RESULT_INTERNET_CONNECTED);
+
+  CaptivePortalService::Results results;
+  results.previous_result = captive_portal::RESULT_INTERNET_CONNECTED;
+  results.result = captive_portal::RESULT_INTERNET_CONNECTED;
+
+  error_handler()->Observe(results);
   base::RunLoop().RunUntilIdle();
 
   EXPECT_FALSE(error_handler()->IsTimerRunningForTesting());
@@ -1507,11 +1494,11 @@
   ssl_info.public_key_hashes.push_back(net::HashValue(kCertPublicKeyHashValue));
 
   std::unique_ptr<TestSSLErrorHandlerDelegate> delegate(
-      new TestSSLErrorHandlerDelegate(profile(), web_contents(), ssl_info));
+      new TestSSLErrorHandlerDelegate(web_contents(), ssl_info));
 
   TestSSLErrorHandlerDelegate* delegate_ptr = delegate.get();
   TestSSLErrorHandler error_handler(
-      std::move(delegate), web_contents(), profile(),
+      std::move(delegate), web_contents(),
       net::MapCertStatusToNetError(ssl_info.cert_status), ssl_info,
       /*network_time_tracker=*/nullptr, GURL() /*request_url*/);
 
diff --git a/chrome/browser/supervised_user/supervised_user_url_filter.cc b/chrome/browser/supervised_user/supervised_user_url_filter.cc
index c8e82f94..e34d6055 100644
--- a/chrome/browser/supervised_user/supervised_user_url_filter.cc
+++ b/chrome/browser/supervised_user/supervised_user_url_filter.cc
@@ -28,7 +28,6 @@
 #include "chrome/common/chrome_features.h"
 #include "components/policy/core/browser/url_blacklist_manager.h"
 #include "components/policy/core/browser/url_util.h"
-#include "components/safe_search_api/safe_search/safe_search_url_checker_client.h"
 #include "components/url_matcher/url_matcher.h"
 #include "components/variations/service/variations_service.h"
 #include "content/public/browser/browser_thread.h"
@@ -542,40 +541,8 @@
       country = variations_service->GetLatestCountry();
   }
 
-  std::unique_ptr<safe_search_api::URLCheckerClient> url_checker_client;
-
-  if ((base::FeatureList::IsEnabled(
-          features::kKidsManagementUrlClassification))) {
-    url_checker_client =
-        std::make_unique<KidsManagementURLCheckerClient>(country);
-  } else {
-    // TODO(crbug.com/940454): remove safe_search_checker
-    net::NetworkTrafficAnnotationTag traffic_annotation =
-        net::DefineNetworkTrafficAnnotation("supervised_user_url_filter", R"(
-        semantics {
-          sender: "Supervised Users"
-          description:
-            "Checks whether a given URL (or set of URLs) is considered safe by "
-            "Google SafeSearch."
-          trigger:
-            "If the parent enabled this feature for the child account, this is "
-            "sent for every navigation."
-          data: "URL(s) to be checked."
-          destination: GOOGLE_OWNED_SERVICE
-        }
-        policy {
-          cookies_allowed: NO
-          setting:
-            "This feature is only used in child accounts and cannot be "
-            "disabled by settings. Parent accounts can disable it in the "
-            "family dashboard."
-          policy_exception_justification: "Not implemented."
-        })");
-    url_checker_client =
-        std::make_unique<safe_search_api::SafeSearchURLCheckerClient>(
-            std::move(url_loader_factory), traffic_annotation, country);
-  }
-
+  std::unique_ptr<safe_search_api::URLCheckerClient> url_checker_client =
+      std::make_unique<KidsManagementURLCheckerClient>(country);
   async_url_checker_ = std::make_unique<safe_search_api::URLChecker>(
       std::move(url_checker_client));
 }
diff --git a/chrome/browser/sync/chrome_sync_client.cc b/chrome/browser/sync/chrome_sync_client.cc
index fbdc7ee..de66b12e 100644
--- a/chrome/browser/sync/chrome_sync_client.cc
+++ b/chrome/browser/sync/chrome_sync_client.cc
@@ -27,6 +27,8 @@
 #include "chrome/browser/search_engines/template_url_service_factory.h"
 #include "chrome/browser/security_events/security_event_recorder.h"
 #include "chrome/browser/security_events/security_event_recorder_factory.h"
+#include "chrome/browser/sharing/sharing_message_bridge.h"
+#include "chrome/browser/sharing/sharing_message_bridge_factory.h"
 #include "chrome/browser/sync/bookmark_sync_service_factory.h"
 #include "chrome/browser/sync/device_info_sync_service_factory.h"
 #include "chrome/browser/sync/model_type_store_service_factory.h"
@@ -611,6 +613,9 @@
       return WifiConfigurationSyncServiceFactory::GetForProfile(profile_)
           ->GetControllerDelegate();
 #endif  // defined(OS_CHROMEOS)
+    case syncer::SHARING_MESSAGE:
+      return SharingMessageBridgeFactory::GetForBrowserContext(profile_)
+          ->GetControllerDelegate();
     case syncer::USER_CONSENTS:
       return ConsentAuditorFactory::GetForProfile(profile_)
           ->GetControllerDelegate();
diff --git a/chrome/browser/sync/profile_sync_service_factory.cc b/chrome/browser/sync/profile_sync_service_factory.cc
index ed35dfc..cceddec 100644
--- a/chrome/browser/sync/profile_sync_service_factory.cc
+++ b/chrome/browser/sync/profile_sync_service_factory.cc
@@ -30,6 +30,7 @@
 #include "chrome/browser/profiles/profile_manager.h"
 #include "chrome/browser/search_engines/template_url_service_factory.h"
 #include "chrome/browser/security_events/security_event_recorder_factory.h"
+#include "chrome/browser/sharing/sharing_message_bridge_factory.h"
 #include "chrome/browser/signin/about_signin_internals_factory.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
 #include "chrome/browser/spellchecker/spellcheck_factory.h"
@@ -156,6 +157,7 @@
   DependsOn(PasswordStoreFactory::GetInstance());
   DependsOn(SecurityEventRecorderFactory::GetInstance());
   DependsOn(SendTabToSelfSyncServiceFactory::GetInstance());
+  DependsOn(SharingMessageBridgeFactory::GetInstance());
   DependsOn(SpellcheckServiceFactory::GetInstance());
 #if BUILDFLAG(ENABLE_SUPERVISED_USERS)
   DependsOn(SupervisedUserServiceFactory::GetInstance());
diff --git a/chrome/browser/sync/profile_sync_service_factory_unittest.cc b/chrome/browser/sync/profile_sync_service_factory_unittest.cc
index f58f0bb..cdd8f321 100644
--- a/chrome/browser/sync/profile_sync_service_factory_unittest.cc
+++ b/chrome/browser/sync/profile_sync_service_factory_unittest.cc
@@ -130,6 +130,7 @@
     datatypes.push_back(syncer::USER_EVENTS);
     datatypes.push_back(syncer::USER_CONSENTS);
     datatypes.push_back(syncer::SEND_TAB_TO_SELF);
+    datatypes.push_back(syncer::SHARING_MESSAGE);
     return datatypes;
   }
 
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 771220c..ef2f1e26 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -427,7 +427,7 @@
     "//components/browsing_data/content",
     "//components/browsing_data/core",
     "//components/bubble",
-    "//components/captive_portal:buildflags",
+    "//components/captive_portal/core:buildflags",
     "//components/consent_auditor/",
     "//components/content_settings/core/browser",
     "//components/crx_file",
@@ -2036,7 +2036,7 @@
       "//chromeos/strings",
       "//chromeos/system",
       "//components/arc",
-      "//components/captive_portal",
+      "//components/captive_portal/core",
       "//components/consent_auditor:consent_auditor",
       "//components/exo",
       "//components/login",
@@ -2577,6 +2577,7 @@
       configs += [ "//build/config/linux:x11" ]
       deps += [
         "//components/dbus/menu",
+        "//ui/base:wm_role_names",
         "//ui/events/devices",
         "//ui/events/devices/x11",
         "//ui/events/platform/x11",
diff --git a/chrome/browser/ui/ash/login_screen_client.cc b/chrome/browser/ui/ash/login_screen_client.cc
index 3970023..3508c677 100644
--- a/chrome/browser/ui/ash/login_screen_client.cc
+++ b/chrome/browser/ui/ash/login_screen_client.cc
@@ -227,15 +227,17 @@
   chromeos::LoginDisplayHost::default_host()->ShowResetScreen();
 }
 
-void LoginScreenClient::ShowAccountAccessHelpApp() {
+void LoginScreenClient::ShowAccountAccessHelpApp(
+    gfx::NativeWindow parent_window) {
   scoped_refptr<chromeos::HelpAppLauncher>(
-      new chromeos::HelpAppLauncher(nullptr))
+      new chromeos::HelpAppLauncher(parent_window))
       ->ShowHelpTopic(chromeos::HelpAppLauncher::HELP_CANT_ACCESS_ACCOUNT);
 }
 
-void LoginScreenClient::ShowParentAccessHelpApp() {
+void LoginScreenClient::ShowParentAccessHelpApp(
+    gfx::NativeWindow parent_window) {
   scoped_refptr<chromeos::HelpAppLauncher>(
-      new chromeos::HelpAppLauncher(nullptr))
+      new chromeos::HelpAppLauncher(parent_window))
       ->ShowHelpTopic(chromeos::HelpAppLauncher::HELP_PARENT_ACCESS_CODE);
 }
 
diff --git a/chrome/browser/ui/ash/login_screen_client.h b/chrome/browser/ui/ash/login_screen_client.h
index ef4674a..fb1a109 100644
--- a/chrome/browser/ui/ash/login_screen_client.h
+++ b/chrome/browser/ui/ash/login_screen_client.h
@@ -120,8 +120,8 @@
                                            const std::string& locale) override;
   void ShowFeedback() override;
   void ShowResetScreen() override;
-  void ShowAccountAccessHelpApp() override;
-  void ShowParentAccessHelpApp() override;
+  void ShowAccountAccessHelpApp(gfx::NativeWindow parent_window) override;
+  void ShowParentAccessHelpApp(gfx::NativeWindow parent_window) override;
   void ShowLockScreenNotificationSettings() override;
   void OnFocusLeavingSystemTray(bool reverse) override;
   void OnUserActivity() override;
diff --git a/chrome/browser/ui/ash/network/network_portal_notification_controller.cc b/chrome/browser/ui/ash/network/network_portal_notification_controller.cc
index 89141394..5be6e9c 100644
--- a/chrome/browser/ui/ash/network/network_portal_notification_controller.cc
+++ b/chrome/browser/ui/ash/network/network_portal_notification_controller.cc
@@ -35,7 +35,7 @@
 #include "chromeos/network/network_state.h"
 #include "chromeos/network/network_state_handler.h"
 #include "chromeos/network/network_type_pattern.h"
-#include "components/captive_portal/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
 #include "components/prefs/pref_service.h"
 #include "components/session_manager/core/session_manager.h"
 #include "components/user_manager/user_manager.h"
diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
index 654b5f9c..aea0a7c 100644
--- a/chrome/browser/ui/tab_helpers.cc
+++ b/chrome/browser/ui/tab_helpers.cc
@@ -86,7 +86,7 @@
 #include "chrome/common/chrome_switches.h"
 #include "components/autofill/content/browser/content_autofill_driver_factory.h"
 #include "components/autofill/core/browser/autofill_manager.h"
-#include "components/captive_portal/buildflags.h"
+#include "components/captive_portal/core/buildflags.h"
 #include "components/dom_distiller/core/dom_distiller_features.h"
 #include "components/download/content/factory/navigation_monitor_factory.h"
 #include "components/download/content/public/download_navigation_observer.h"
diff --git a/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura_ash.cc b/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura_ash.cc
index 3175183b..0c67302b 100644
--- a/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura_ash.cc
+++ b/chrome/browser/ui/views/apps/chrome_native_app_window_views_aura_ash.cc
@@ -15,7 +15,6 @@
 #include "ash/public/cpp/shelf_types.h"
 #include "ash/public/cpp/shell_window_ids.h"
 #include "ash/public/cpp/tablet_mode.h"
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/public/cpp/window_state_type.h"
 #include "base/bind.h"
@@ -93,8 +92,8 @@
   // TODO(https://crbug.com/997480): Determine if all non-resizable windows
   // should have this behavior, or just the feedback app.
   if (app_window->extension_id() == extension_misc::kFeedbackExtensionId) {
-    ash::WindowBackdrop::Get(window)->SetBackdropType(
-        ash::WindowBackdrop::BackdropType::kSemiOpaque);
+    window->SetProperty(ash::kBackdropWindowMode,
+                        ash::BackdropWindowMode::kAutoSemiOpaque);
   }
   observed_window_.Add(window);
 }
diff --git a/chrome/browser/ui/views/extensions/extensions_menu_test_util.cc b/chrome/browser/ui/views/extensions/extensions_menu_test_util.cc
index 080c181..d748b90 100644
--- a/chrome/browser/ui/views/extensions/extensions_menu_test_util.cc
+++ b/chrome/browser/ui/views/extensions/extensions_menu_test_util.cc
@@ -7,6 +7,7 @@
 #include "base/numerics/safe_conversions.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/extensions/extension_action_view_controller.h"
 #include "chrome/browser/ui/toolbar/toolbar_action_view_controller.h"
 #include "chrome/browser/ui/views/extensions/extension_popup.h"
 #include "chrome/browser/ui/views/extensions/extensions_menu_button.h"
@@ -84,8 +85,10 @@
 }
 
 void ExtensionsMenuTestUtil::InspectPopup(int index) {
-  // TODO(https://crbug.com/984654): Implement this.
-  NOTREACHED();
+  ExtensionsMenuItemView* view = GetMenuItemViewAtIndex(index);
+  DCHECK(view);
+  static_cast<ExtensionActionViewController*>(view->view_controller())
+      ->InspectPopup();
 }
 
 bool ExtensionsMenuTestUtil::HasIcon(int index) {
diff --git a/chrome/browser/ui/views/extensions/extensions_toolbar_container.cc b/chrome/browser/ui/views/extensions/extensions_toolbar_container.cc
index 3cba4f0..b017c140 100644
--- a/chrome/browser/ui/views/extensions/extensions_toolbar_container.cc
+++ b/chrome/browser/ui/views/extensions/extensions_toolbar_container.cc
@@ -276,13 +276,19 @@
   // could be handled inside the model and be invisible to the container when
   // permissions are unchanged.
 
-  // Delete the icon first so it unregisters it from the action.
+  auto iter = std::find_if(
+      actions_.begin(), actions_.end(),
+      [action_id](const auto& item) { return item->GetId() == action_id; });
+  DCHECK(iter != actions_.end());
+  // Ensure the action outlives the UI element to perform any cleanup.
+  std::unique_ptr<ToolbarActionViewController> controller = std::move(*iter);
+  actions_.erase(iter);
+  // Undo the popout, if necessary. Actions expect to not be popped out while
+  // destroying.
+  if (popped_out_action_ == controller.get())
+    UndoPopOut();
+
   icons_.erase(action_id);
-  base::EraseIf(
-      actions_,
-      [action_id](const std::unique_ptr<ToolbarActionViewController>& item) {
-        return item->GetId() == action_id;
-      });
 }
 
 void ExtensionsToolbarContainer::OnToolbarActionMoved(
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc
index 5500ff01..9bc2353 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc
@@ -20,6 +20,7 @@
 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
 #include "chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.h"
 #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
+#include "chrome/common/webui_url_constants.h"
 #include "chrome/grit/generated_resources.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/interactive_test_utils.h"
@@ -27,6 +28,7 @@
 #include "components/omnibox/browser/omnibox_popup_model.h"
 #include "components/omnibox/browser/test_scheme_classifier.h"
 #include "content/public/browser/web_contents.h"
+#include "content/public/common/url_constants.h"
 #include "ui/accessibility/accessibility_switches.h"
 #include "ui/accessibility/ax_action_data.h"
 #include "ui/accessibility/ax_node_data.h"
@@ -673,14 +675,14 @@
       static_cast<OmniboxViewViews*>(omnibox_view);
 
   // Open new tab page.
-  ui_test_utils::NavigateToURL(browser(), GURL("chrome://newtab"));
+  ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL));
 
   content::WebContents* tab =
       browser()->tab_strip_model()->GetActiveWebContents();
   // Kill the tab with chrome://kill
   {
     content::ScopedAllowRendererCrashes scoped_allow_renderer_crashes;
-    ui_test_utils::NavigateToURL(browser(), GURL("chrome://kill"));
+    ui_test_utils::NavigateToURL(browser(), GURL(content::kChromeUIKillURL));
     EXPECT_TRUE(tab->IsCrashed());
   }
 
@@ -690,7 +692,8 @@
 
   // Verify the omnibox contents, URL and icon.
   EXPECT_EQ(base::ASCIIToUTF16(""), omnibox_view_views->GetText());
-  EXPECT_EQ(GURL("about:blank"), browser()->location_bar_model()->GetURL());
+  EXPECT_EQ(GURL(url::kAboutBlankURL),
+            browser()->location_bar_model()->GetURL());
 }
 
 // The following set of tests require UIA accessibility support, which only
diff --git a/chrome/browser/ui/views/status_icons/status_icon_linux_x11.cc b/chrome/browser/ui/views/status_icons/status_icon_linux_x11.cc
index 145610d..f510169 100644
--- a/chrome/browser/ui/views/status_icons/status_icon_linux_x11.cc
+++ b/chrome/browser/ui/views/status_icons/status_icon_linux_x11.cc
@@ -15,6 +15,7 @@
 #include "chrome/browser/shell_integration_linux.h"
 #include "ui/aura/window.h"
 #include "ui/aura/window_tree_host.h"
+#include "ui/base/wm_role_names_linux.h"
 #include "ui/base/x/x11_util.h"
 #include "ui/events/platform/x11/x11_event_source.h"
 #include "ui/gfx/canvas.h"
@@ -88,10 +89,6 @@
   // We outlive the host, so no need to remove ourselves as an observer.
   host->AddObserver(this);
 
-  int visual_id;
-  if (ui::GetIntProperty(manager, "_NET_SYSTEM_TRAY_VISUAL", &visual_id))
-    host->SetPendingXVisualId(visual_id);
-
   const int width = std::max(1, delegate_->GetImage().width());
   const int height = std::max(1, delegate_->GetImage().height());
 
@@ -105,6 +102,7 @@
   params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
   params.native_widget = native_widget.release();
   params.desktop_window_tree_host = host.release();
+  params.wm_role_name = ui::kStatusIconWmRoleName;
   params.wm_class_name = shell_integration_linux::GetProgramClassName();
   params.wm_class_class = shell_integration_linux::GetProgramClassClass();
   // The status icon is a tiny window that doesn't update very often, so
diff --git a/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.cc b/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.cc
index 09cb31f..4c3586a 100644
--- a/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.cc
+++ b/chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.cc
@@ -5,7 +5,6 @@
 #include "chrome/browser/ui/webui/chromeos/multidevice_setup/multidevice_setup_dialog.h"
 
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/public/cpp/window_properties.h"
 #include "base/bind.h"
 #include "base/strings/utf_string_conversions.h"
@@ -59,8 +58,8 @@
 
   // Remove the black backdrop behind the dialog window which appears in tablet
   // and full-screen mode.
-  ash::WindowBackdrop::Get(window)->SetBackdropMode(
-      ash::WindowBackdrop::BackdropMode::kDisabled);
+  window->SetProperty(ash::kBackdropWindowMode,
+                      ash::BackdropWindowMode::kDisabled);
 }
 
 // static
diff --git a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc b/chrome/browser/ui/webui/interstitials/interstitial_ui.cc
index 61e126e0..7d141d0 100644
--- a/chrome/browser/ui/webui/interstitials/interstitial_ui.cc
+++ b/chrome/browser/ui/webui/interstitials/interstitial_ui.cc
@@ -22,7 +22,7 @@
 #include "chrome/browser/ssl/chrome_security_blocking_page_factory.h"
 #include "chrome/common/buildflags.h"
 #include "chrome/common/url_constants.h"
-#include "components/captive_portal/buildflags.h"
+#include "components/captive_portal/core/buildflags.h"
 #include "components/grit/dev_ui_components_resources.h"
 #include "components/safe_browsing/core/db/database_manager.h"
 #include "components/security_interstitials/content/bad_clock_blocking_page.h"
diff --git a/chrome/browser/ui/webui/signin/inline_login_handler_dialog_chromeos.cc b/chrome/browser/ui/webui/signin/inline_login_handler_dialog_chromeos.cc
index efd87ecb..7e3af1e 100644
--- a/chrome/browser/ui/webui/signin/inline_login_handler_dialog_chromeos.cc
+++ b/chrome/browser/ui/webui/signin/inline_login_handler_dialog_chromeos.cc
@@ -7,7 +7,6 @@
 #include <algorithm>
 #include <string>
 
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/public/cpp/window_properties.h"
 #include "base/logging.h"
 #include "base/macros.h"
@@ -71,8 +70,8 @@
 
   // TODO(crbug.com/1016828): Remove/update this after the dialog behavior on
   // Chrome OS is defined.
-  ash::WindowBackdrop::Get(dialog->dialog_window())
-      ->SetBackdropType(ash::WindowBackdrop::BackdropType::kSemiOpaque);
+  dialog->dialog_window()->SetProperty(
+      ash::kBackdropWindowMode, ash::BackdropWindowMode::kAutoSemiOpaque);
 }
 
 void InlineLoginHandlerDialogChromeOS::AdjustWidgetInitParams(
diff --git a/chrome/browser/unified_consent/unified_consent_browsertest.cc b/chrome/browser/unified_consent/unified_consent_browsertest.cc
index b4aa9aa9..c9d6e47 100644
--- a/chrome/browser/unified_consent/unified_consent_browsertest.cc
+++ b/chrome/browser/unified_consent/unified_consent_browsertest.cc
@@ -56,6 +56,8 @@
 
  protected:
   base::HistogramTester histogram_tester_;
+  const std::string histogram_name_ =
+      "UnifiedConsent.MakeSearchesAndBrowsingBetter.OnStartup";
 
  private:
   void InitializeSyncClientsIfNeeded() {
@@ -71,9 +73,7 @@
 // Tests that the settings histogram is recorded if unified consent is enabled.
 // The histogram is recorded during profile initialization.
 IN_PROC_BROWSER_TEST_F(UnifiedConsentBrowserTest, SettingsHistogram_None) {
-  histogram_tester_.ExpectUniqueSample(
-      "UnifiedConsent.SyncAndGoogleServicesSettings",
-      metrics::SettingsHistogramValue::kNone, 1);
+  histogram_tester_.ExpectUniqueSample(histogram_name_, false, 1);
 }
 
 // Tests that all service entries in the settings histogram are recorded after
@@ -88,14 +88,7 @@
 IN_PROC_BROWSER_TEST_F(
     UnifiedConsentBrowserTest,
     SettingsHistogram_UrlKeyedAnonymizedDataCollectionEnabled) {
-  histogram_tester_.ExpectBucketCount(
-      "UnifiedConsent.SyncAndGoogleServicesSettings",
-      metrics::SettingsHistogramValue::kNone, 0);
-  histogram_tester_.ExpectBucketCount(
-      "UnifiedConsent.SyncAndGoogleServicesSettings",
-      metrics::SettingsHistogramValue::kUrlKeyedAnonymizedDataCollection, 1);
-  histogram_tester_.ExpectTotalCount(
-      "UnifiedConsent.SyncAndGoogleServicesSettings", 1);
+  histogram_tester_.ExpectUniqueSample(histogram_name_, true, 1);
 }
 
 IN_PROC_BROWSER_TEST_F(UnifiedConsentBrowserTest,
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc
index 32cedff..95f24309 100644
--- a/chrome/common/chrome_features.cc
+++ b/chrome/common/chrome_features.cc
@@ -336,7 +336,7 @@
 // If enabled, policies will use FCM (Firebase Cloud Messaging) for its
 // invalidations.
 const base::Feature kPolicyFcmInvalidations{"PolicyFCMInvalidations",
-                                            base::FEATURE_DISABLED_BY_DEFAULT};
+                                            base::FEATURE_ENABLED_BY_DEFAULT};
 
 // Disables ambient authentication in incognito mode.
 const base::Feature kEnableAmbientAuthenticationInIncognito{
@@ -487,11 +487,6 @@
                                    base::FEATURE_DISABLED_BY_DEFAULT};
 #endif
 
-// Uses KidsManagement UrlClassification instead of SafeSearch for supervised
-// accounts.
-const base::Feature kKidsManagementUrlClassification{
-    "KidsManagementUrlClassification", base::FEATURE_ENABLED_BY_DEFAULT};
-
 #if defined(OS_MACOSX)
 // Uses NSFullSizeContentViewWindowMask where available instead of adding our
 // own views to the window frame. This is a temporary kill switch, it can be
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h
index 334f4a7..095da94 100644
--- a/chrome/common/chrome_features.h
+++ b/chrome/common/chrome_features.h
@@ -301,9 +301,6 @@
 #endif
 
 COMPONENT_EXPORT(CHROME_FEATURES)
-extern const base::Feature kKidsManagementUrlClassification;
-
-COMPONENT_EXPORT(CHROME_FEATURES)
 extern const base::Feature kLookalikeUrlNavigationSuggestionsUI;
 
 #if defined(OS_MACOSX)
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index 25646d3..64a4b7ab 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -1388,6 +1388,11 @@
 // Indicates how long print jobs metadata is stored on the device, in days.
 const char kPrintJobHistoryExpirationPeriod[] =
     "printing.print_job_history_expiration_period";
+
+// The list of extensions allowed to skip print job confirmation dialog when
+// they use the chrome.printing.submitJob() function.
+const char kPrintingAPIExtensionsWhitelist[] =
+    "printing.printing_api_extensions_whitelist";
 #endif  // OS_CHROMEOS
 
 // An integer pref specifying the fallback behavior for sites outside of content
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index 320689cf..34a98690 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -439,6 +439,7 @@
 extern const char kPrintingSizeDefault[];
 extern const char kPrintingSendUsernameAndFilenameEnabled[];
 extern const char kPrintJobHistoryExpirationPeriod[];
+extern const char kPrintingAPIExtensionsWhitelist[];
 #endif  // OS_CHROMEOS
 
 extern const char kDefaultSupervisedUserFilteringBehavior[];
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 829e69af..a72ca35 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -16,7 +16,7 @@
 import("//chrome/common/features.gni")
 import("//chrome/test/base/js2gtest.gni")
 import("//chromeos/assistant/assistant.gni")
-import("//components/captive_portal/features.gni")
+import("//components/captive_portal/core/features.gni")
 import("//components/feature_engagement/features.gni")
 import("//components/feed/features.gni")
 import("//components/gwp_asan/buildflags/buildflags.gni")
@@ -176,7 +176,7 @@
     "//chrome/utility",
     "//components/autofill/core/browser:test_support",
     "//components/bookmarks/test",
-    "//components/captive_portal:test_support",
+    "//components/captive_portal/core:test_support",
     "//components/consent_auditor:test_support",
     "//components/gcm_driver:test_support",
     "//components/gcm_driver/crypto:test_support",
@@ -539,6 +539,7 @@
       "../browser/payments/payment_request_can_make_payment_event_browsertest.cc",
       "../browser/payments/personal_data_manager_test_util.cc",
       "../browser/payments/personal_data_manager_test_util.h",
+      "../browser/profiles/profile_browsertest_android.cc",
       "../browser/ssl/crlset_browsertest.cc",
       "android/browsertests_apk/android_browsertests_jni_onload.cc",
       "base/android/android_browser_test_browsertest_android.cc",
@@ -685,7 +686,7 @@
       "//components/autofill/content/browser:risk_proto",
       "//components/autofill/content/common/mojom",
       "//components/autofill/content/renderer:test_support",
-      "//components/captive_portal:test_support",
+      "//components/captive_portal/core:test_support",
       "//components/cbor",
       "//components/data_reduction_proxy/core/browser:test_support",
       "//components/dom_distiller/content/browser",
@@ -3611,7 +3612,7 @@
     "//components/account_id",
     "//components/autofill/content/renderer:test_support",
     "//components/browser_sync:test_support",
-    "//components/captive_portal:buildflags",
+    "//components/captive_portal/core:buildflags",
     "//components/component_updater:test_support",
     "//components/content_settings/core/test:test_support",
     "//components/data_reduction_proxy/core/browser:test_support",
@@ -4195,6 +4196,7 @@
       "../browser/sharing/shared_clipboard/shared_clipboard_utils_unittest.cc",
       "../browser/sharing/sms/sms_fetch_request_handler_unittest.cc",
       "../browser/sharing/sms/sms_remote_fetcher_unittest.cc",
+      "../browser/sharing/webrtc/ice_config_fetcher_unittest.cc",
       "../browser/ui/autofill/payments/local_card_migration_bubble_controller_impl_unittest.cc",
       "../browser/ui/autofill/payments/save_card_bubble_controller_impl_unittest.cc",
       "../browser/ui/bluetooth/bluetooth_chooser_controller_unittest.cc",
@@ -5445,7 +5447,7 @@
     ]
     deps = [
       "//chrome/common/profiler",
-      "//components/captive_portal:buildflags",
+      "//components/captive_portal/core:buildflags",
       "//components/metrics:test_support",
       "//components/nacl/common:buildflags",
       "//components/os_crypt:test_support",
diff --git a/chrome/test/base/in_process_browser_test.cc b/chrome/test/base/in_process_browser_test.cc
index a7f6d3f..4906914 100644
--- a/chrome/test/base/in_process_browser_test.cc
+++ b/chrome/test/base/in_process_browser_test.cc
@@ -58,7 +58,7 @@
 #include "chrome/test/base/test_launcher_utils.h"
 #include "chrome/test/base/testing_browser_process.h"
 #include "chrome/test/base/ui_test_utils.h"
-#include "components/captive_portal/buildflags.h"
+#include "components/captive_portal/core/buildflags.h"
 #include "components/google/core/common/google_util.h"
 #include "components/os_crypt/os_crypt_mocker.h"
 #include "content/public/browser/devtools_agent_host.h"
@@ -84,7 +84,7 @@
 #endif
 
 #if BUILDFLAG(ENABLE_CAPTIVE_PORTAL_DETECTION)
-#include "chrome/browser/captive_portal/captive_portal_service.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 #endif
 
 #if !defined(OS_ANDROID)
diff --git a/chrome/test/data/extensions/api_test/webrequest/cors/fetch.html b/chrome/test/data/extensions/api_test/webrequest/cors/fetch.html
index 32cf477..966335f 100644
--- a/chrome/test/data/extensions/api_test/webrequest/cors/fetch.html
+++ b/chrome/test/data/extensions/api_test/webrequest/cors/fetch.html
@@ -8,7 +8,9 @@
 const hostname = 'cors.example.com';
 const origin = location.protocol + '//' + hostname + ':' + location.port;
 const path = params.get('path');
-const url = origin + '/extensions/api_test/webrequest/cors/' + path;
+const abspath = params.has('abspath') ? params.get('abspath') : undefined;
+const url =
+      origin + (abspath || ('/extensions/api_test/webrequest/cors/' + path));
 const withPreflight = params.has('with-preflight');
 const headers = withPreflight? {'x-foo': 'x-bar'} : undefined;
 
diff --git a/chrome/test/data/extensions/api_test/webrequest/test_cors.js b/chrome/test/data/extensions/api_test/webrequest/test_cors.js
index efe4591..8fb7531 100644
--- a/chrome/test/data/extensions/api_test/webrequest/test_cors.js
+++ b/chrome/test/data/extensions/api_test/webrequest/test_cors.js
@@ -638,5 +638,20 @@
     registerOnBeforeRequestAndOnErrorOcurredListeners();
     navigateAndWait(getServerURL(
         BASE + 'fetch.html?path=accept&with-preflight'));
-  }
+  },
+  function testCorsServerRedirect() {
+    const url = getServerURL('server-redirect?whatever', 'cors.example.com');
+
+    const callback = callbackPass(() => {});
+    chrome.webRequest.onHeadersReceived.addListener((details) => {
+      if (details.url === url && details.method === 'GET') {
+        callback();
+      }
+    }, {urls: ["http://*/*"]}, ['extraHeaders']);
+
+    const absPath =
+          encodeURIComponent(`/server-redirect?${encodeURIComponent(url)}`);
+    navigateAndWait(getServerURL(
+        BASE + `fetch.html?abspath=${absPath}&with-preflight`));
+  },
 ]);
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json
index afec8582..e1df24d 100644
--- a/chrome/test/data/policy/policy_test_cases.json
+++ b/chrome/test/data/policy/policy_test_cases.json
@@ -474,6 +474,13 @@
     ]
   },
 
+  "PrintingAPIExtensionsWhitelist": {
+    "os": ["chromeos"],
+    "pref_mappings": [
+      { "pref": "printing.printing_api_extensions_whitelist" }
+    ]
+  },
+
   "CloudPrintSubmitEnabled": {
     "os": ["win", "mac", "linux"],
     "policy_pref_mapping_test": [
diff --git a/chrome/test/data/sharing/network_traversal_response.json b/chrome/test/data/sharing/network_traversal_response.json
new file mode 100644
index 0000000..274b094
--- /dev/null
+++ b/chrome/test/data/sharing/network_traversal_response.json
@@ -0,0 +1,21 @@
+{
+  "lifetimeDuration": "400s",
+  "iceServers": [
+    {
+      "urls": [
+        "stun:url1"
+      ]
+    },
+    {
+      "urls": [
+        "turn:url2?transport=udp",
+        "turn:url3?transport=tcp"
+      ],
+      "username": "username",
+      "credential": "credential",
+      "maxRateKbps": "1"
+    }
+  ],
+  "blockStatus": "NOT_BLOCKED",
+  "iceTransportPolicy": "all"
+}
\ No newline at end of file
diff --git a/chrome/test/data/webui/settings/a11y/sign_out_a11y_test.js b/chrome/test/data/webui/settings/a11y/sign_out_a11y_test.js
index b8fb359..d9ea79d 100644
--- a/chrome/test/data/webui/settings/a11y/sign_out_a11y_test.js
+++ b/chrome/test/data/webui/settings/a11y/sign_out_a11y_test.js
@@ -63,47 +63,36 @@
                           .$$('settings-people-page');
     assert(!!this.peoplePage);
 
-    if (this.peoplePage.diceEnabled_) {
-      sync_test_util.simulateSyncStatus({
-        signedIn: false,
-        signinAllowed: true,
-        syncSystemEnabled: true,
-        disabled: false,
-      });
-    }
+    sync_test_util.simulateSyncStatus({
+      signedIn: false,
+      signinAllowed: true,
+      syncSystemEnabled: true,
+      disabled: false,
+    });
   },
   /** @override */
   tests: {
     'Accessible Dialog': function() {
       let parent = null;
-      let disconnectButtonSelector = null;
 
       return this.browserProxy.getSyncStatus()
           .then(syncStatus => {
             // Navigate to the sign out dialog.
             Polymer.dom.flush();
 
-            if (this.peoplePage.diceEnabled_) {
-              const syncAccountControl =
-                  this.peoplePage.$$('settings-sync-account-control');
-              syncAccountControl.syncStatus = {
-                firstSetupInProgress: false,
-                signedIn: true,
-                signedInUsername: 'bar@bar.com',
-                statusAction: settings.StatusAction.NO_ACTION,
-                hasError: false,
-                disabled: false,
-              };
-              parent = syncAccountControl;
-              disconnectButtonSelector = '#turn-off';
-            } else {
-              parent = this.peoplePage;
-              disconnectButtonSelector = '#disconnectButton';
-            }
+            parent = this.peoplePage.$$('settings-sync-account-control');
+            parent.syncStatus = {
+              firstSetupInProgress: false,
+              signedIn: true,
+              signedInUsername: 'bar@bar.com',
+              statusAction: settings.StatusAction.NO_ACTION,
+              hasError: false,
+              disabled: false,
+            };
             return test_util.waitBeforeNextRender(parent);
           })
           .then(() => {
-            disconnectButton = parent.$$(disconnectButtonSelector);
+            disconnectButton = parent.$$('#turn-off');
             assert(!!disconnectButton);
             disconnectButton.click();
             Polymer.dom.flush();
diff --git a/chrome/test/data/webui/settings/cr_settings_browsertest.js b/chrome/test/data/webui/settings/cr_settings_browsertest.js
index c9c75d1..cbdfa008 100644
--- a/chrome/test/data/webui/settings/cr_settings_browsertest.js
+++ b/chrome/test/data/webui/settings/cr_settings_browsertest.js
@@ -877,6 +877,10 @@
 });
 GEN('#endif');
 
+TEST_F('CrSettingsPersonalizationOptionsTest', 'AllBuildsOld', function() {
+  mocha.grep('PersonalizationOptionsTests_AllBuilds_Old').run();
+});
+
 /**
  * Test fixture for
  * chrome/browser/resources/settings/privacy_page/privacy_page.html.
diff --git a/chrome/test/data/webui/settings/personalization_options_test.js b/chrome/test/data/webui/settings/personalization_options_test.js
index f3d232b..8de7026 100644
--- a/chrome/test/data/webui/settings/personalization_options_test.js
+++ b/chrome/test/data/webui/settings/personalization_options_test.js
@@ -25,7 +25,7 @@
     suiteSetup(function() {
       loadTimeData.overrideValues({
         driveSuggestAvailable: true,
-        privacySettingsRedesign: false,
+        privacySettingsRedesignEnabled: true,
       });
     });
 
@@ -71,6 +71,15 @@
       assertFalse(!!testElement.$$('#driveSuggestControl'));
     });
 
+    /**
+     *  TODO(crbug.com/1032584): This test verifies that the link doctor setting
+     * is removed as part of the privacy settings redesign. Consider removing
+     * the test once the redesign is fully launched.
+     */
+    test('LinkDoctor', function() {
+      assertFalse(!!testElement.$$('#linkDoctor'));
+    });
+
     if (!cr.isChromeOS) {
       test('signinAllowedToggle', function() {
         const toggle = testElement.$.signinAllowedToggle;
@@ -216,4 +225,39 @@
       assertTrue(testElement.prefs.spellcheck.use_spelling_service.value);
     });
   });
+
+  suite('PersonalizationOptionsTests_AllBuilds_Old', function() {
+    /**
+     * Tests for changes in the personalization page when the
+     * |privacySettingsRedesignEnabled| flag is off.
+     * TODO(crbug.com/1032584): Remove this suite when the redesign is fully
+     * launched and the flag is removed.
+     */
+
+    /** @type {SettingsPersonalizationOptionsElement} */
+    let testElement;
+
+    suiteSetup(function() {
+      loadTimeData.overrideValues({
+        privacySettingsRedesignEnabled: false,
+      });
+    });
+
+    setup(function() {
+      PolymerTest.clearBody();
+      testElement = document.createElement('settings-personalization-options');
+      document.body.appendChild(testElement);
+      Polymer.dom.flush();
+    });
+
+    teardown(function() {
+      testElement.remove();
+    });
+
+    test('LinkDoctor', function() {
+      // The Link Doctor setting exists if the |privacySettingsRedesignEnabled|
+      // has not been turned on.
+      assertVisible(testElement.$$('#linkDoctor'), true);
+    });
+  });
 });
diff --git a/chrome/test/data/webui/settings/sync_account_control_test.js b/chrome/test/data/webui/settings/sync_account_control_test.js
index 36b2b53..77ffbdc33 100644
--- a/chrome/test/data/webui/settings/sync_account_control_test.js
+++ b/chrome/test/data/webui/settings/sync_account_control_test.js
@@ -28,13 +28,6 @@
       testElement.syncStatus = {signedIn: signedIn};
     }
 
-    suiteSetup(function() {
-      // Force UIs to think DICE is enabled for this profile.
-      loadTimeData.overrideValues({
-        diceEnabled: true,
-      });
-    });
-
     setup(function() {
       sync_test_util.setupRouterWithSyncRoutes();
       browserProxy = new TestSyncBrowserProxy();
diff --git a/chromeos/CHROMEOS_LKGM b/chromeos/CHROMEOS_LKGM
index cd0be71..d3a3c8dc 100644
--- a/chromeos/CHROMEOS_LKGM
+++ b/chromeos/CHROMEOS_LKGM
@@ -1 +1 @@
-12849.0.0
\ No newline at end of file
+12852.0.0
\ No newline at end of file
diff --git a/chromeos/dbus/permission_broker/fake_permission_broker_client.cc b/chromeos/dbus/permission_broker/fake_permission_broker_client.cc
index 225127d4..f481699 100644
--- a/chromeos/dbus/permission_broker/fake_permission_broker_client.cc
+++ b/chromeos/dbus/permission_broker/fake_permission_broker_client.cc
@@ -135,20 +135,6 @@
   return udp_hole_set_.find(rule) != udp_hole_set_.end();
 }
 
-bool FakePermissionBrokerClient::HasTcpPortForward(
-    uint16_t port,
-    const std::string& interface) {
-  auto rule = std::make_pair(port, interface);
-  return tcp_forwarding_set_.find(rule) != tcp_forwarding_set_.end();
-}
-
-bool FakePermissionBrokerClient::HasUdpPortForward(
-    uint16_t port,
-    const std::string& interface) {
-  auto rule = std::make_pair(port, interface);
-  return udp_forwarding_set_.find(rule) != udp_forwarding_set_.end();
-}
-
 void FakePermissionBrokerClient::RequestTcpPortForward(
     uint16_t in_port,
     const std::string& in_interface,
@@ -156,10 +142,7 @@
     uint16_t dst_port,
     int lifeline_fd,
     ResultCallback callback) {
-  // TODO(matterchen): Increase logic for adding duplicate ports.
-  auto rule = std::make_pair(in_port, in_interface);
-  tcp_forwarding_set_.insert(rule);
-  std::move(callback).Run(true);
+  std::move(callback).Run(false);
 }
 
 void FakePermissionBrokerClient::RequestUdpPortForward(
@@ -169,9 +152,7 @@
     uint16_t dst_port,
     int lifeline_fd,
     ResultCallback callback) {
-  auto rule = std::make_pair(in_port, in_interface);
-  udp_forwarding_set_.insert(rule);
-  std::move(callback).Run(true);
+  std::move(callback).Run(false);
 }
 
 void FakePermissionBrokerClient::ReleaseTcpPortForward(
diff --git a/chromeos/dbus/permission_broker/fake_permission_broker_client.h b/chromeos/dbus/permission_broker/fake_permission_broker_client.h
index 722ddb0..2b732df 100644
--- a/chromeos/dbus/permission_broker/fake_permission_broker_client.h
+++ b/chromeos/dbus/permission_broker/fake_permission_broker_client.h
@@ -76,12 +76,6 @@
   // Returns true if UDP port has a hole.
   bool HasUdpHole(uint16_t port, const std::string& interface);
 
-  // Returns true if TCP port is being forwarded.
-  bool HasTcpPortForward(uint16_t port, const std::string& interface);
-
-  // Returns true if UDP port is being forwarded.
-  bool HasUdpPortForward(uint16_t port, const std::string& interface);
-
  private:
   using RuleSet =
       std::set<std::pair<uint16_t /* port */, std::string /* interface */>>;
@@ -94,9 +88,6 @@
   RuleSet tcp_hole_set_;
   RuleSet udp_hole_set_;
 
-  RuleSet tcp_forwarding_set_;
-  RuleSet udp_forwarding_set_;
-
   RuleSet tcp_deny_rule_set_;
   RuleSet udp_deny_rule_set_;
 
diff --git a/components/BUILD.gn b/components/BUILD.gn
index c7d89f7..21f8a5036 100644
--- a/components/BUILD.gn
+++ b/components/BUILD.gn
@@ -66,7 +66,7 @@
     "//components/bookmarks/managed:unit_tests",
     "//components/browsing_data/core:unit_tests",
     "//components/bubble:unit_tests",
-    "//components/captive_portal:unit_tests",
+    "//components/captive_portal/core:unit_tests",
     "//components/cbor:unit_tests",
     "//components/certificate_matching:unit_tests",
     "//components/client_update_protocol:unit_tests",
diff --git a/components/autofill_assistant/browser/actions/action_delegate.h b/components/autofill_assistant/browser/actions/action_delegate.h
index e540548..e81488d1 100644
--- a/components/autofill_assistant/browser/actions/action_delegate.h
+++ b/components/autofill_assistant/browser/actions/action_delegate.h
@@ -26,6 +26,8 @@
 namespace autofill {
 class AutofillProfile;
 class CreditCard;
+struct FormData;
+struct FormFieldData;
 class PersonalDataManager;
 }  // namespace autofill
 
@@ -107,8 +109,8 @@
   // scripts, even though we're in the middle of a script. This includes
   // allowing access to the touchable elements set previously, in the same
   // script.
-  virtual void Prompt(
-      std::unique_ptr<std::vector<UserAction>> user_actions) = 0;
+  virtual void Prompt(std::unique_ptr<std::vector<UserAction>> user_actions,
+                      bool disable_force_expand_sheet) = 0;
 
   // Have the UI leave the prompt state and go back to its previous state.
   virtual void CleanUpAfterPrompt() = 0;
@@ -146,6 +148,14 @@
       const Selector& selector,
       base::OnceCallback<void(const ClientStatus&)> callback) = 0;
 
+  // Return |FormData| and |FormFieldData| for the element identified with
+  // |selector|. The result is returned asynchronously through |callback|.
+  virtual void RetrieveElementFormAndFieldData(
+      const Selector& selector,
+      base::OnceCallback<void(const ClientStatus&,
+                              const autofill::FormData&,
+                              const autofill::FormFieldData&)> callback);
+
   // Select the option given by |selector| and the value of the option to be
   // picked.
   virtual void SelectOption(
@@ -314,6 +324,13 @@
   // Checks the current peek mode.
   virtual ConfigureBottomSheetProto::PeekMode GetPeekMode() = 0;
 
+  // Expands the bottom sheet. This is the same as the user swiping up.
+  virtual void ExpandBottomSheet() = 0;
+
+  // Collapses the bottom sheet to the current peek state as set by
+  // |SetPeekMode|. This is the same as the user swiping down.
+  virtual void CollapseBottomSheet() = 0;
+
   // Calls the callback once the main document window has been resized.
   virtual void WaitForWindowHeightChange(
       base::OnceCallback<void(const ClientStatus&)> callback) = 0;
diff --git a/components/autofill_assistant/browser/actions/collect_user_data_action.cc b/components/autofill_assistant/browser/actions/collect_user_data_action.cc
index 745d1332..789df23 100644
--- a/components/autofill_assistant/browser/actions/collect_user_data_action.cc
+++ b/components/autofill_assistant/browser/actions/collect_user_data_action.cc
@@ -435,7 +435,8 @@
   if (collect_user_data.has_prompt()) {
     delegate_->SetStatusMessage(collect_user_data.prompt());
   }
-  delegate_->Prompt(nullptr);
+  delegate_->Prompt(/* user_actions = */ nullptr,
+                    /* disable_force_expand_sheet = */ false);
   delegate_->CollectUserData(collect_user_data_options_.get());
 }
 
diff --git a/components/autofill_assistant/browser/actions/configure_bottom_sheet_action.cc b/components/autofill_assistant/browser/actions/configure_bottom_sheet_action.cc
index 6a14521..73797dc 100644
--- a/components/autofill_assistant/browser/actions/configure_bottom_sheet_action.cc
+++ b/components/autofill_assistant/browser/actions/configure_bottom_sheet_action.cc
@@ -71,6 +71,11 @@
     delegate_->SetPeekMode(proto.peek_mode());
   }
 
+  if (proto.has_expand() && proto.expand())
+    delegate_->ExpandBottomSheet();
+  if (proto.has_collapse() && proto.collapse())
+    delegate_->CollapseBottomSheet();
+
   if (callback) {
     UpdateProcessedAction(OkClientStatus());
     std::move(callback).Run(std::move(processed_action_proto_));
diff --git a/components/autofill_assistant/browser/actions/mock_action_delegate.h b/components/autofill_assistant/browser/actions/mock_action_delegate.h
index 74e8010..de38d0f 100644
--- a/components/autofill_assistant/browser/actions/mock_action_delegate.h
+++ b/components/autofill_assistant/browser/actions/mock_action_delegate.h
@@ -11,6 +11,7 @@
 
 #include "base/callback.h"
 #include "components/autofill/core/browser/data_model/credit_card.h"
+#include "components/autofill/core/common/form_data.h"
 #include "components/autofill_assistant/browser/actions/action_delegate.h"
 #include "components/autofill_assistant/browser/client_settings.h"
 #include "components/autofill_assistant/browser/service.pb.h"
@@ -67,8 +68,9 @@
                     ClickAction::ClickType click_type,
                     base::OnceCallback<void(const ClientStatus&)> callback));
 
-  MOCK_METHOD1(Prompt,
-               void(std::unique_ptr<std::vector<UserAction>> user_actions));
+  MOCK_METHOD2(Prompt,
+               void(std::unique_ptr<std::vector<UserAction>> user_actions,
+                    bool disable_force_expand_sheet));
   MOCK_METHOD0(CleanUpAfterPrompt, void());
 
   void FillAddressForm(
@@ -91,6 +93,17 @@
     OnFillCardForm(card.get(), cvc, selector, callback);
   }
 
+  void RetrieveElementFormAndFieldData(
+      const Selector& selector,
+      base::OnceCallback<void(const ClientStatus&,
+                              const autofill::FormData&,
+                              const autofill::FormFieldData&)> callback)
+      override {
+    autofill::FormData form_data;
+    autofill::FormFieldData field_data;
+    std::move(callback).Run(OkClientStatus(), form_data, field_data);
+  }
+
   MOCK_METHOD4(OnFillCardForm,
                void(const autofill::CreditCard* card,
                     const base::string16& cvc,
@@ -225,6 +238,8 @@
   MOCK_METHOD1(SetPeekMode,
                void(ConfigureBottomSheetProto::PeekMode peek_mode));
   MOCK_METHOD0(GetPeekMode, ConfigureBottomSheetProto::PeekMode());
+  MOCK_METHOD0(ExpandBottomSheet, void());
+  MOCK_METHOD0(CollapseBottomSheet, void());
   MOCK_METHOD3(
       SetForm,
       bool(std::unique_ptr<FormProto> form,
@@ -269,6 +284,7 @@
   }
 
   MOCK_METHOD0(RequireUI, void());
+  MOCK_METHOD0(SetExpandSheetForPromptAction, bool());
 
   const ClientSettings& GetSettings() override { return client_settings_; }
 
diff --git a/components/autofill_assistant/browser/actions/prompt_action.cc b/components/autofill_assistant/browser/actions/prompt_action.cc
index c4a9732..2ae4ccc 100644
--- a/components/autofill_assistant/browser/actions/prompt_action.cc
+++ b/components/autofill_assistant/browser/actions/prompt_action.cc
@@ -147,7 +147,8 @@
                                            weak_ptr_factory_.GetWeakPtr(), i));
     user_actions->emplace_back(std::move(user_action));
   }
-  delegate_->Prompt(std::move(user_actions));
+  delegate_->Prompt(std::move(user_actions),
+                    proto_.prompt().disable_force_expand_sheet());
   precondition_changed_ = false;
 }
 
diff --git a/components/autofill_assistant/browser/actions/prompt_action_unittest.cc b/components/autofill_assistant/browser/actions/prompt_action_unittest.cc
index 03fb70f..fd8b4f98 100644
--- a/components/autofill_assistant/browser/actions/prompt_action_unittest.cc
+++ b/components/autofill_assistant/browser/actions/prompt_action_unittest.cc
@@ -45,9 +45,10 @@
 
     EXPECT_CALL(mock_action_delegate_, OnWaitForDom(_, _, _, _))
         .WillRepeatedly(Invoke(this, &PromptActionTest::FakeWaitForDom));
-    ON_CALL(mock_action_delegate_, Prompt(_))
-        .WillByDefault(Invoke(
-            [this](std::unique_ptr<std::vector<UserAction>> user_actions) {
+    ON_CALL(mock_action_delegate_, Prompt(_, _))
+        .WillByDefault(
+            Invoke([this](std::unique_ptr<std::vector<UserAction>> user_actions,
+                          bool disable_force_expand_sheet) {
               user_actions_ = std::move(user_actions);
             }));
     prompt_proto_ = proto_.mutable_prompt();
diff --git a/components/autofill_assistant/browser/actions/set_form_field_value_action.cc b/components/autofill_assistant/browser/actions/set_form_field_value_action.cc
index 2244d227..daa61113 100644
--- a/components/autofill_assistant/browser/actions/set_form_field_value_action.cc
+++ b/components/autofill_assistant/browser/actions/set_form_field_value_action.cc
@@ -8,6 +8,9 @@
 
 #include "base/bind.h"
 #include "base/callback.h"
+#include "components/autofill/core/common/form_data.h"
+#include "components/autofill/core/common/form_field_data.h"
+#include "components/autofill/core/common/signatures_util.h"
 #include "components/autofill_assistant/browser/actions/action_delegate.h"
 #include "components/autofill_assistant/browser/client_status.h"
 
@@ -20,8 +23,9 @@
 SetFormFieldValueAction::FieldInput::FieldInput(std::string _value)
     : value(_value) {}
 
-SetFormFieldValueAction::FieldInput::FieldInput(bool _use_password)
-    : use_password(_use_password) {}
+SetFormFieldValueAction::FieldInput::FieldInput(bool _use_password,
+                                                bool _generate_password)
+    : use_password(_use_password), generate_password(_generate_password) {}
 
 SetFormFieldValueAction::FieldInput::FieldInput(FieldInput&& other) = default;
 
@@ -93,7 +97,8 @@
                                          ->selected_login()
                                          ->username);
         } else {
-          field_inputs_.emplace_back(/* use_password = */ true);
+          field_inputs_.emplace_back(/* use_password = */ true,
+                                     /* generate_password = */ false);
         }
         break;
       case SetFormFieldValueProto_KeyPress::kText:
@@ -118,6 +123,10 @@
             /* value = */ *delegate_->GetClientMemory()->additional_value(
                 keypress.client_memory_key()));
         break;
+      case SetFormFieldValueProto_KeyPress::kGeneratePassword:
+        field_inputs_.emplace_back(/* use_password = */ true,
+                                   /* generate_password = */ true);
+        break;
       default:
         DVLOG(1) << "Unrecognized field for SetFormFieldValueProto_KeyPress";
         EndAction(ClientStatus(INVALID_ACTION));
@@ -159,11 +168,20 @@
                                  delay_in_millisecond,
                                  std::move(next_field_callback));
   } else if (field_input.use_password) {
-    delegate_->GetWebsiteLoginFetcher()->GetPasswordForLogin(
-        *delegate_->GetClientMemory()->selected_login(),
-        base::BindOnce(&SetFormFieldValueAction::OnGetPassword,
-                       weak_ptr_factory_.GetWeakPtr(),
-                       /* field_index = */ next));
+    if (field_input.generate_password) {
+      delegate_->RetrieveElementFormAndFieldData(
+          selector_,
+          base::BindOnce(
+              &SetFormFieldValueAction::OnGetFormAndFieldDataForGeneration,
+              weak_ptr_factory_.GetWeakPtr(),
+              /* field_index = */ next));
+    } else {
+      delegate_->GetWebsiteLoginFetcher()->GetPasswordForLogin(
+          *delegate_->GetClientMemory()->selected_login(),
+          base::BindOnce(&SetFormFieldValueAction::OnGetStoredPassword,
+                         weak_ptr_factory_.GetWeakPtr(),
+                         /* field_index = */ next));
+    }
   } else {
     if (simulate_key_presses || field_input.value.empty()) {
       delegate_->SetFieldValue(selector_, field_input.value,
@@ -230,9 +248,9 @@
   OnSetFieldValue(field_index + 1, OkClientStatus());
 }
 
-void SetFormFieldValueAction::OnGetPassword(int field_index,
-                                            bool success,
-                                            std::string password) {
+void SetFormFieldValueAction::OnGetStoredPassword(int field_index,
+                                                  bool success,
+                                                  std::string password) {
   if (!success) {
     EndAction(ClientStatus(AUTOFILL_INFO_NOT_AVAILABLE));
     return;
@@ -255,6 +273,37 @@
   }
 }
 
+void SetFormFieldValueAction::OnGetFormAndFieldDataForGeneration(
+    int field_index,
+    const ClientStatus& status,
+    const autofill::FormData& form_data,
+    const autofill::FormFieldData& field_data) {
+  if (!status.ok()) {
+    EndAction(status);
+  }
+  uint64_t max_length = field_data.max_length;
+  std::string password = delegate_->GetWebsiteLoginFetcher()->GeneratePassword(
+      autofill::CalculateFormSignature(form_data),
+      autofill::CalculateFieldSignatureForField(field_data), max_length);
+
+  bool simulate_key_presses = proto_.set_form_value().simulate_key_presses();
+  int delay_in_millisecond = proto_.set_form_value().delay_in_millisecond();
+  if (simulate_key_presses) {
+    delegate_->SetFieldValue(
+        selector_, password, simulate_key_presses, delay_in_millisecond,
+        base::BindOnce(&SetFormFieldValueAction::OnSetFieldValue,
+                       weak_ptr_factory_.GetWeakPtr(),
+                       /* next = */ field_index + 1));
+  } else {
+    delegate_->SetFieldValue(
+        selector_, password, simulate_key_presses, delay_in_millisecond,
+        base::BindOnce(
+            &SetFormFieldValueAction::OnSetFieldValueAndCheckFallback,
+            weak_ptr_factory_.GetWeakPtr(),
+            /* next = */ field_index, /* requested_value = */ password));
+  }
+}
+
 void SetFormFieldValueAction::EndAction(const ClientStatus& status) {
   // Clear immediately, to prevent sensitive information from staying in memory.
   field_inputs_.clear();
diff --git a/components/autofill_assistant/browser/actions/set_form_field_value_action.h b/components/autofill_assistant/browser/actions/set_form_field_value_action.h
index adfbf7b9..38a8d1768 100644
--- a/components/autofill_assistant/browser/actions/set_form_field_value_action.h
+++ b/components/autofill_assistant/browser/actions/set_form_field_value_action.h
@@ -15,6 +15,11 @@
 #include "components/autofill_assistant/browser/actions/action.h"
 #include "components/autofill_assistant/browser/string_conversions_util.h"
 
+namespace autofill {
+struct FormData;
+struct FormFieldData;
+}  // namespace autofill
+
 namespace autofill_assistant {
 
 // An action to set the value of a form input element.
@@ -33,16 +38,19 @@
   struct FieldInput {
     explicit FieldInput(std::unique_ptr<std::vector<UChar32>> keyboard_input);
     explicit FieldInput(std::string value);
-    explicit FieldInput(bool use_password);
+    explicit FieldInput(bool use_password, bool generate_password);
     FieldInput(FieldInput&& other);
     ~FieldInput();
 
     // The keys to press if either |keycode| or |keyboard_input| is set, else
     // nullptr.
     std::unique_ptr<std::vector<UChar32>> keyboard_input = nullptr;
-    // True if the value should be retrieved from the login details in client
-    // memory.
+    // True if the value should be a password. The value itself will be
+    // retrieved right before filling for security reasons.
     bool use_password = false;
+    // True, if the value should be a generated password. Otherwise, the value
+    // should be retrieved from the login details in client memory.
+    bool generate_password = false;
     // The string to input (for all other cases).
     std::string value;
   };
@@ -63,7 +71,13 @@
                                        const std::string& requested_value,
                                        const ClientStatus& status);
 
-  void OnGetPassword(int field_index, bool success, std::string password);
+  void OnGetStoredPassword(int field_index, bool success, std::string password);
+
+  void OnGetFormAndFieldDataForGeneration(
+      int field_index,
+      const ClientStatus& status,
+      const autofill::FormData& form_data,
+      const autofill::FormFieldData& field_data);
 
   void EndAction(const ClientStatus& status);
 
diff --git a/components/autofill_assistant/browser/actions/set_form_field_value_action_unittest.cc b/components/autofill_assistant/browser/actions/set_form_field_value_action_unittest.cc
index 7bccea4..cedf9de8 100644
--- a/components/autofill_assistant/browser/actions/set_form_field_value_action_unittest.cc
+++ b/components/autofill_assistant/browser/actions/set_form_field_value_action_unittest.cc
@@ -21,6 +21,7 @@
 const char kFakeSelector[] = "#some_selector";
 const char kFakeUsername[] = "user@example.com";
 const char kFakePassword[] = "example_password";
+const char kGeneratedPassword[] = "m-W2b-_.7Fu9A.A";
 }  // namespace
 
 namespace autofill_assistant {
@@ -55,6 +56,8 @@
                 WebsiteLoginFetcher::Login(GURL(kFakeUrl), kFakeUsername)}));
     ON_CALL(mock_website_login_fetcher_, OnGetPasswordForLogin(_, _))
         .WillByDefault(RunOnceCallback<1>(true, kFakePassword));
+    ON_CALL(mock_website_login_fetcher_, GetGeneratedPassword())
+        .WillByDefault(Return(kGeneratedPassword));
     client_memory_.set_selected_login({GURL(kFakeUrl), kFakeUsername});
     fake_selector_ = Selector({kFakeSelector}).MustBeVisible();
   }
@@ -130,7 +133,7 @@
   action.ProcessAction(callback_.Get());
 }
 
-TEST_F(SetFormFieldValueActionTest, Password) {
+TEST_F(SetFormFieldValueActionTest, PasswordToFill) {
   auto* value = set_form_field_proto_->add_value();
   value->set_use_password(true);
   SetFormFieldValueAction action(&mock_action_delegate_, proto_);
@@ -146,6 +149,22 @@
   action.ProcessAction(callback_.Get());
 }
 
+TEST_F(SetFormFieldValueActionTest, GeneratedPassword) {
+  auto* value = set_form_field_proto_->add_value();
+  value->set_generate_password(true);
+  SetFormFieldValueAction action(&mock_action_delegate_, proto_);
+  ON_CALL(mock_action_delegate_, OnGetFieldValue(_, _))
+      .WillByDefault(RunOnceCallback<1>(OkClientStatus(), kGeneratedPassword));
+  EXPECT_CALL(mock_action_delegate_,
+              OnSetFieldValue(fake_selector_, kGeneratedPassword, _, _, _))
+      .WillOnce(RunOnceCallback<4>(OkClientStatus()));
+
+  EXPECT_CALL(
+      callback_,
+      Run(Pointee(Property(&ProcessedActionProto::status, ACTION_APPLIED))));
+  action.ProcessAction(callback_.Get());
+}
+
 TEST_F(SetFormFieldValueActionTest, Keycode) {
   auto* value = set_form_field_proto_->add_value();
   value->set_keycode(13);  // carriage return
diff --git a/components/autofill_assistant/browser/actions/show_form_action.cc b/components/autofill_assistant/browser/actions/show_form_action.cc
index 353693e..51e59dd 100644
--- a/components/autofill_assistant/browser/actions/show_form_action.cc
+++ b/components/autofill_assistant/browser/actions/show_form_action.cc
@@ -58,7 +58,8 @@
 
   auto user_actions = std::make_unique<std::vector<UserAction>>();
   user_actions->emplace_back(std::move(user_action));
-  delegate_->Prompt(std::move(user_actions));
+  delegate_->Prompt(std::move(user_actions),
+                    /* disable_force_expand_sheet = */ false);
 }
 
 void ShowFormAction::OnCancelForm(const ClientStatus& status) {
diff --git a/components/autofill_assistant/browser/controller.cc b/components/autofill_assistant/browser/controller.cc
index 3d3b0ed..445c082 100644
--- a/components/autofill_assistant/browser/controller.cc
+++ b/components/autofill_assistant/browser/controller.cc
@@ -314,6 +314,10 @@
     listeners_.erase(found);
 }
 
+void Controller::SetExpandSheetForPromptAction(bool expand) {
+  expand_sheet_for_prompt_action_ = expand;
+}
+
 bool Controller::PerformUserActionWithContext(
     int index,
     std::unique_ptr<TriggerContext> context) {
@@ -354,6 +358,24 @@
   }
 }
 
+void Controller::ExpandBottomSheet() {
+  for (ControllerObserver& observer : observers_) {
+    // TODO(crbug/806868): The interface here and in some of the other On*
+    // events should be coming from the UI layer, not the controller. Or at
+    // least be renamed to something like On*Requested.
+    observer.OnExpandBottomSheet();
+  }
+}
+
+void Controller::CollapseBottomSheet() {
+  for (ControllerObserver& observer : observers_) {
+    // TODO(crbug/806868): The interface here and in some of the other On*
+    // events should be coming from the UI layer, not the controller. Or at
+    // least be renamed to something like On*Requested.
+    observer.OnCollapseBottomSheet();
+  }
+}
+
 const FormProto* Controller::GetForm() const {
   return form_.get();
 }
@@ -477,6 +499,10 @@
   return &event_handler_;
 }
 
+bool Controller::ShouldPromptActionExpandSheet() const {
+  return expand_sheet_for_prompt_action_;
+}
+
 void Controller::AddObserver(ControllerObserver* observer) {
   observers_.AddObserver(observer);
 }
diff --git a/components/autofill_assistant/browser/controller.h b/components/autofill_assistant/browser/controller.h
index baa28bb2..c213066 100644
--- a/components/autofill_assistant/browser/controller.h
+++ b/components/autofill_assistant/browser/controller.h
@@ -123,6 +123,8 @@
       std::unique_ptr<std::vector<UserAction>> user_actions) override;
   void SetViewportMode(ViewportMode mode) override;
   void SetPeekMode(ConfigureBottomSheetProto::PeekMode peek_mode) override;
+  void ExpandBottomSheet() override;
+  void CollapseBottomSheet() override;
   bool SetForm(
       std::unique_ptr<FormProto> form,
       base::RepeatingCallback<void(const FormProto::Result*)> changed_callback,
@@ -137,6 +139,8 @@
   void AddListener(ScriptExecutorDelegate::Listener* listener) override;
   void RemoveListener(ScriptExecutorDelegate::Listener* listener) override;
 
+  void SetExpandSheetForPromptAction(bool expand) override;
+
   bool EnterState(AutofillAssistantState state) override;
   void SetCollectUserDataOptions(CollectUserDataOptions* options) override;
   void WriteUserData(
@@ -207,6 +211,7 @@
                      const ValueProto& value) override;
   UserModel* GetUserModel() override;
   EventHandler* GetEventHandler() override;
+  bool ShouldPromptActionExpandSheet() const override;
 
  private:
   friend ControllerTest;
@@ -375,6 +380,7 @@
   // Current peek mode.
   ConfigureBottomSheetProto::PeekMode peek_mode_ =
       ConfigureBottomSheetProto::HANDLE;
+  bool auto_change_peek_mode_ = false;
 
   std::unique_ptr<OverlayColors> overlay_colors_;
 
@@ -438,6 +444,8 @@
   EventHandler event_handler_;
   UserModel user_model_;
 
+  bool expand_sheet_for_prompt_action_ = true;
+
   base::WeakPtrFactory<Controller> weak_ptr_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(Controller);
diff --git a/components/autofill_assistant/browser/controller_observer.h b/components/autofill_assistant/browser/controller_observer.h
index de52bbee..2e71a310 100644
--- a/components/autofill_assistant/browser/controller_observer.h
+++ b/components/autofill_assistant/browser/controller_observer.h
@@ -98,6 +98,12 @@
   virtual void OnPeekModeChanged(
       ConfigureBottomSheetProto::PeekMode peek_mode) = 0;
 
+  // Called when the bottom sheet should be expanded.
+  virtual void OnExpandBottomSheet() = 0;
+
+  // Called when the bottom sheet should be collapsed.
+  virtual void OnCollapseBottomSheet() = 0;
+
   // Called when the overlay colors have changed.
   virtual void OnOverlayColorsChanged(
       const UiDelegate::OverlayColors& colors) = 0;
diff --git a/components/autofill_assistant/browser/fake_script_executor_delegate.cc b/components/autofill_assistant/browser/fake_script_executor_delegate.cc
index 14b6b5b5..c1b1b9e 100644
--- a/components/autofill_assistant/browser/fake_script_executor_delegate.cc
+++ b/components/autofill_assistant/browser/fake_script_executor_delegate.cc
@@ -143,6 +143,16 @@
   return peek_mode_;
 }
 
+void FakeScriptExecutorDelegate::ExpandBottomSheet() {
+  expand_or_collapse_updated_ = true;
+  expand_or_collapse_value_ = true;
+}
+
+void FakeScriptExecutorDelegate::CollapseBottomSheet() {
+  expand_or_collapse_updated_ = true;
+  expand_or_collapse_value_ = false;
+}
+
 bool FakeScriptExecutorDelegate::HasNavigationError() {
   return navigation_error_;
 }
@@ -163,6 +173,10 @@
   listeners_.erase(listener);
 }
 
+void FakeScriptExecutorDelegate::SetExpandSheetForPromptAction(bool expand) {
+  expand_sheet_for_prompt_ = expand;
+}
+
 bool FakeScriptExecutorDelegate::SetForm(
     std::unique_ptr<FormProto> form,
     base::RepeatingCallback<void(const FormProto::Result*)> changed_callback,
diff --git a/components/autofill_assistant/browser/fake_script_executor_delegate.h b/components/autofill_assistant/browser/fake_script_executor_delegate.h
index 672c33f..8e29f12 100644
--- a/components/autofill_assistant/browser/fake_script_executor_delegate.h
+++ b/components/autofill_assistant/browser/fake_script_executor_delegate.h
@@ -57,6 +57,8 @@
   ViewportMode GetViewportMode() override;
   void SetPeekMode(ConfigureBottomSheetProto::PeekMode peek_mode) override;
   ConfigureBottomSheetProto::PeekMode GetPeekMode() override;
+  void ExpandBottomSheet() override;
+  void CollapseBottomSheet() override;
   bool SetForm(
       std::unique_ptr<FormProto> form,
       base::RepeatingCallback<void(const FormProto::Result*)> changed_callback,
@@ -68,6 +70,7 @@
   void RequireUI() override;
   void AddListener(Listener* listener) override;
   void RemoveListener(Listener* listener) override;
+  void SetExpandSheetForPromptAction(bool expand) override;
 
   ClientSettings* GetMutableSettings() { return &client_settings_; }
 
@@ -132,6 +135,10 @@
   ViewportMode viewport_mode_ = ViewportMode::NO_RESIZE;
   ConfigureBottomSheetProto::PeekMode peek_mode_ =
       ConfigureBottomSheetProto::HANDLE;
+  bool expand_or_collapse_updated_ = false;
+  bool expand_or_collapse_value_ = false;
+  bool expand_sheet_for_prompt_ = true;
+
   bool require_ui_ = false;
 
   DISALLOW_COPY_AND_ASSIGN(FakeScriptExecutorDelegate);
diff --git a/components/autofill_assistant/browser/mock_controller_observer.h b/components/autofill_assistant/browser/mock_controller_observer.h
index 8dd8cb4..b0abf6a 100644
--- a/components/autofill_assistant/browser/mock_controller_observer.h
+++ b/components/autofill_assistant/browser/mock_controller_observer.h
@@ -47,6 +47,8 @@
   MOCK_METHOD1(OnViewportModeChanged, void(ViewportMode mode));
   MOCK_METHOD1(OnPeekModeChanged,
                void(ConfigureBottomSheetProto::PeekMode peek_mode));
+  MOCK_METHOD0(OnExpandBottomSheet, void());
+  MOCK_METHOD0(OnCollapseBottomSheet, void());
   MOCK_METHOD1(OnOverlayColorsChanged,
                void(const UiDelegate::OverlayColors& colors));
   MOCK_METHOD1(OnFormChanged, void(const FormProto* form));
diff --git a/components/autofill_assistant/browser/mock_website_login_fetcher.h b/components/autofill_assistant/browser/mock_website_login_fetcher.h
index 57dc326..49bd6b7d 100644
--- a/components/autofill_assistant/browser/mock_website_login_fetcher.h
+++ b/components/autofill_assistant/browser/mock_website_login_fetcher.h
@@ -38,6 +38,13 @@
                void(const Login& login,
                     base::OnceCallback<void(bool, std::string)>&));
 
+  std::string GeneratePassword(autofill::FormSignature form_signature,
+                               autofill::FieldSignature field_signature,
+                               uint64_t max_length) override {
+    return GetGeneratedPassword();
+  }
+
+  MOCK_METHOD0(GetGeneratedPassword, std::string());
   DISALLOW_COPY_AND_ASSIGN(MockWebsiteLoginFetcher);
 };
 
diff --git a/components/autofill_assistant/browser/script_executor.cc b/components/autofill_assistant/browser/script_executor.cc
index 1e1f6a2..f38b5cc7 100644
--- a/components/autofill_assistant/browser/script_executor.cc
+++ b/components/autofill_assistant/browser/script_executor.cc
@@ -272,8 +272,11 @@
 }
 
 void ScriptExecutor::Prompt(
-    std::unique_ptr<std::vector<UserAction>> user_actions) {
-
+    std::unique_ptr<std::vector<UserAction>> user_actions,
+    bool disable_force_expand_sheet) {
+  // First communicate to the delegate that prompt actions should or should not
+  // expand the sheet intitially.
+  delegate_->SetExpandSheetForPromptAction(!disable_force_expand_sheet);
   if (delegate_->EnterState(AutofillAssistantState::PROMPT) &&
       touchable_element_area_) {
     // Prompt() reproduces the end-of-script appearance and behavior during
@@ -305,6 +308,7 @@
   touchable_element_area_.reset();
 
   delegate_->ClearTouchableElementArea();
+  delegate_->SetExpandSheetForPromptAction(true);
   delegate_->EnterState(AutofillAssistantState::RUNNING);
 }
 
@@ -333,6 +337,15 @@
                                               std::move(callback));
 }
 
+void ScriptExecutor::RetrieveElementFormAndFieldData(
+    const Selector& selector,
+    base::OnceCallback<void(const ClientStatus&,
+                            const autofill::FormData&,
+                            const autofill::FormFieldData&)> callback) {
+  delegate_->GetWebController()->RetrieveElementFormAndFieldData(
+      selector, std::move(callback));
+}
+
 void ScriptExecutor::SelectOption(
     const Selector& selector,
     const std::string& selected_option,
@@ -545,6 +558,14 @@
   return delegate_->GetPeekMode();
 }
 
+void ScriptExecutor::ExpandBottomSheet() {
+  return delegate_->ExpandBottomSheet();
+}
+
+void ScriptExecutor::CollapseBottomSheet() {
+  return delegate_->CollapseBottomSheet();
+}
+
 void ScriptExecutor::WaitForWindowHeightChange(
     base::OnceCallback<void(const ClientStatus&)> callback) {
   delegate_->GetWebController()->WaitForWindowHeightChange(std::move(callback));
diff --git a/components/autofill_assistant/browser/script_executor.h b/components/autofill_assistant/browser/script_executor.h
index ea70dd4..139b8a9 100644
--- a/components/autofill_assistant/browser/script_executor.h
+++ b/components/autofill_assistant/browser/script_executor.h
@@ -126,7 +126,8 @@
   void WriteUserData(
       base::OnceCallback<void(UserData*, UserData::FieldChange*)>) override;
   void GetFullCard(GetFullCardCallback callback) override;
-  void Prompt(std::unique_ptr<std::vector<UserAction>> user_actions) override;
+  void Prompt(std::unique_ptr<std::vector<UserAction>> user_actions,
+              bool disable_force_expand_sheet) override;
   void CleanUpAfterPrompt() override;
   void FillAddressForm(
       const autofill::AutofillProfile* profile,
@@ -137,6 +138,12 @@
       const base::string16& cvc,
       const Selector& selector,
       base::OnceCallback<void(const ClientStatus&)> callback) override;
+  void RetrieveElementFormAndFieldData(
+      const Selector& selector,
+      base::OnceCallback<void(const ClientStatus&,
+                              const autofill::FormData& form_data,
+                              const autofill::FormFieldData& field_data)>
+          callback) override;
   void SelectOption(
       const Selector& selector,
       const std::string& selected_option,
@@ -210,6 +217,8 @@
   ViewportMode GetViewportMode() override;
   void SetPeekMode(ConfigureBottomSheetProto::PeekMode peek_mode) override;
   ConfigureBottomSheetProto::PeekMode GetPeekMode() override;
+  void ExpandBottomSheet() override;
+  void CollapseBottomSheet() override;
   void WaitForWindowHeightChange(
       base::OnceCallback<void(const ClientStatus&)> callback) override;
   const ClientSettings& GetSettings() override;
diff --git a/components/autofill_assistant/browser/script_executor_delegate.h b/components/autofill_assistant/browser/script_executor_delegate.h
index c42e3436..fe048e2 100644
--- a/components/autofill_assistant/browser/script_executor_delegate.h
+++ b/components/autofill_assistant/browser/script_executor_delegate.h
@@ -86,6 +86,8 @@
   virtual void SetViewportMode(ViewportMode mode) = 0;
   virtual void SetPeekMode(ConfigureBottomSheetProto::PeekMode peek_mode) = 0;
   virtual ConfigureBottomSheetProto::PeekMode GetPeekMode() = 0;
+  virtual void ExpandBottomSheet() = 0;
+  virtual void CollapseBottomSheet() = 0;
   virtual bool SetForm(
       std::unique_ptr<FormProto> form,
       base::RepeatingCallback<void(const FormProto::Result*)> changed_callback,
@@ -134,6 +136,9 @@
   // exists.
   virtual void RemoveListener(Listener* listener) = 0;
 
+  // Set how the sheet should behave when entering a prompt state.
+  virtual void SetExpandSheetForPromptAction(bool expand) = 0;
+
  protected:
   virtual ~ScriptExecutorDelegate() {}
 };
diff --git a/components/autofill_assistant/browser/service.proto b/components/autofill_assistant/browser/service.proto
index 5d06133..51b8e597 100644
--- a/components/autofill_assistant/browser/service.proto
+++ b/components/autofill_assistant/browser/service.proto
@@ -1229,6 +1229,10 @@
   // If true, run scripts flagged with 'interrupt=true' as soon as their
   // preconditions match, then go back to the prompt.
   optional bool allow_interrupt = 5;
+
+  // If this is true, then we do not force expand the sheet when entering the
+  // prompt state. When false or not set, this keeps the default behavior.
+  optional bool disable_force_expand_sheet = 6;
 }
 
 message ContactDetailsProto {
@@ -1595,6 +1599,8 @@
       bool use_password = 5;
       // Use the value stored at the specified memory location.
       string client_memory_key = 6;
+      // Use a password generated by Chrome password manager.
+      bool generate_password = 7;
     }
   }
 
@@ -1673,6 +1679,10 @@
 
     // Show swipe handle, header, progress bar, suggestions and actions.
     HANDLE_HEADER_CAROUSELS = 3;
+
+    // Entirely hide the bottom sheet when collapsed.
+    // TBD:
+    HIDDEN = 4;
   }
 
   // Whether the viewport should be resized. Resizing the viewport is an
@@ -1680,15 +1690,25 @@
   // cautiously.
   optional ViewportResizing viewport_resizing = 1;
 
-  // Set the peek mode. This will change the peek height of the sheet. If
-  // viewport_resizing is set to RESIZE_LAYOUT_VIEWPORT or was set by a previous
-  // ConfigureBottomSheet action, the viewport will be resized to match the new
-  // peek height.
+  // Set the peek mode. This will change the peek mode of the sheet without
+  // actually updating the sheet to that setting. If viewport_resizing is set
+  // to RESIZE_LAYOUT_VIEWPORT or was set by a previous ConfigureBottomSheet
+  // action, the viewport will be resized to match the new peek height.
   optional PeekMode peek_mode = 2;
 
   // Maximum time to wait for the window to resize before continuing with the
   // script. If 0 or unset, the action doesn't wait.
   optional int32 resize_timeout_ms = 3;
+
+  // Option to automatically expand or collapse the sheet or leave as is.
+  oneof apply_state {
+    // Go to the expanded state (same as if the user swiped the bottom sheet
+    // up).
+    bool expand = 4;
+    // Go to the peek state (same as if the user swiped the bottom
+    // sheet down).
+    bool collapse = 5;
+  }
 }
 
 // Allow scripts to display a form with multiple inputs.
diff --git a/components/autofill_assistant/browser/ui_delegate.h b/components/autofill_assistant/browser/ui_delegate.h
index a166a184..d6bce48 100644
--- a/components/autofill_assistant/browser/ui_delegate.h
+++ b/components/autofill_assistant/browser/ui_delegate.h
@@ -174,6 +174,7 @@
   // Returns whether the viewport should be resized.
   virtual ViewportMode GetViewportMode() = 0;
 
+  // Peek mode state and whether it was changed automatically last time.
   virtual ConfigureBottomSheetProto::PeekMode GetPeekMode() = 0;
 
   // Fills in the overlay colors.
@@ -212,6 +213,9 @@
   // Returns the event handler.
   virtual EventHandler* GetEventHandler() = 0;
 
+  // Whether the sheet should be auto expanded when entering the prompt state.
+  virtual bool ShouldPromptActionExpandSheet() const = 0;
+
  protected:
  protected:
   UiDelegate() = default;
diff --git a/components/autofill_assistant/browser/web/web_controller.cc b/components/autofill_assistant/browser/web/web_controller.cc
index 96a9e806..1e116f0 100644
--- a/components/autofill_assistant/browser/web/web_controller.cc
+++ b/components/autofill_assistant/browser/web/web_controller.cc
@@ -824,6 +824,68 @@
   std::move(callback).Run(OkClientStatus());
 }
 
+void WebController::RetrieveElementFormAndFieldData(
+    const Selector& selector,
+    base::OnceCallback<void(const ClientStatus&,
+                            const autofill::FormData& form_data,
+                            const autofill::FormFieldData& field_data)>
+        callback) {
+  DVLOG(3) << __func__ << " " << selector;
+  FindElement(
+      selector, /* strict_mode= */ true,
+      base::BindOnce(&WebController::OnFindElementToRetrieveFormAndFieldData,
+                     weak_ptr_factory_.GetWeakPtr(), selector,
+                     std::move(callback)));
+}
+
+void WebController::OnFindElementToRetrieveFormAndFieldData(
+    const Selector& selector,
+    base::OnceCallback<void(const ClientStatus&,
+                            const autofill::FormData& form_data,
+                            const autofill::FormFieldData& field_data)>
+        callback,
+    const ClientStatus& status,
+    std::unique_ptr<ElementFinder::Result> element_result) {
+  if (!status.ok()) {
+    DVLOG(1) << __func__
+             << " Failed to find the element to retrieve form and field data.";
+    std::move(callback).Run(status, autofill::FormData(),
+                            autofill::FormFieldData());
+    return;
+  }
+  ContentAutofillDriver* driver = ContentAutofillDriver::GetForRenderFrameHost(
+      element_result->container_frame_host);
+  if (driver == nullptr) {
+    DVLOG(1) << __func__ << " Failed to get the autofill driver.";
+    std::move(callback).Run(
+        FillAutofillErrorStatus(UnexpectedErrorStatus(__FILE__, __LINE__)),
+        autofill::FormData(), autofill::FormFieldData());
+    return;
+  }
+  DCHECK(!selector.empty());
+  driver->GetAutofillAgent()->GetElementFormAndFieldData(
+      std::vector<std::string>(1, selector.selectors.back()),
+      base::BindOnce(&WebController::OnGetFormAndFieldDataForRetrieving,
+                     weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
+}
+
+void WebController::OnGetFormAndFieldDataForRetrieving(
+    base::OnceCallback<void(const ClientStatus&,
+                            const autofill::FormData& form_data,
+                            const autofill::FormFieldData& field_data)>
+        callback,
+    const autofill::FormData& form_data,
+    const autofill::FormFieldData& field_data) {
+  if (form_data.fields.empty()) {
+    DVLOG(1) << __func__
+             << " Failed to get form and field data for retrieving.";
+    std::move(callback).Run(UnexpectedErrorStatus(__FILE__, __LINE__),
+                            autofill::FormData(), autofill::FormFieldData());
+    return;
+  }
+  std::move(callback).Run(OkClientStatus(), form_data, field_data);
+}
+
 void WebController::SelectOption(
     const Selector& selector,
     const std::string& selected_option,
diff --git a/components/autofill_assistant/browser/web/web_controller.h b/components/autofill_assistant/browser/web/web_controller.h
index acd8deca..6bce22b 100644
--- a/components/autofill_assistant/browser/web/web_controller.h
+++ b/components/autofill_assistant/browser/web/web_controller.h
@@ -32,6 +32,8 @@
 namespace autofill {
 class AutofillProfile;
 class CreditCard;
+struct FormData;
+struct FormFieldData;
 }  // namespace autofill
 
 namespace content {
@@ -39,11 +41,6 @@
 class RenderFrameHost;
 }  // namespace content
 
-namespace autofill {
-struct FormData;
-struct FormFieldData;
-}  // namespace autofill
-
 namespace autofill_assistant {
 struct ClientSettings;
 
@@ -96,6 +93,15 @@
       const Selector& selector,
       base::OnceCallback<void(const ClientStatus&)> callback);
 
+  // Return |FormData| and |FormFieldData| for the element identified with
+  // |selector|. The result is returned asynchronously through |callback|.
+  virtual void RetrieveElementFormAndFieldData(
+      const Selector& selector,
+      base::OnceCallback<void(const ClientStatus&,
+                              const autofill::FormData& form_data,
+                              const autofill::FormFieldData& field_data)>
+          callback);
+
   // Select the option given by |selector| and the value of the option to be
   // picked.
   virtual void SelectOption(
@@ -311,6 +317,21 @@
       content::RenderFrameHost* container_frame_host,
       const autofill::FormData& form_data,
       const autofill::FormFieldData& form_field);
+  void OnFindElementToRetrieveFormAndFieldData(
+      const Selector& selector,
+      base::OnceCallback<void(const ClientStatus&,
+                              const autofill::FormData& form_data,
+                              const autofill::FormFieldData& form_field)>
+          callback,
+      const ClientStatus& status,
+      std::unique_ptr<ElementFinder::Result> element_result);
+  void OnGetFormAndFieldDataForRetrieving(
+      base::OnceCallback<void(const ClientStatus&,
+                              const autofill::FormData& form_data,
+                              const autofill::FormFieldData& form_field)>
+          callback,
+      const autofill::FormData& form_data,
+      const autofill::FormFieldData& form_field);
   void OnFindElementForFocusElement(
       const TopPadding& top_padding,
       base::OnceCallback<void(const ClientStatus&)> callback,
diff --git a/components/autofill_assistant/browser/website_login_fetcher.h b/components/autofill_assistant/browser/website_login_fetcher.h
index 41e11fa..78598382 100644
--- a/components/autofill_assistant/browser/website_login_fetcher.h
+++ b/components/autofill_assistant/browser/website_login_fetcher.h
@@ -10,6 +10,7 @@
 #include <vector>
 
 #include "base/macros.h"
+#include "components/autofill/core/common/signatures_util.h"
 #include "url/gurl.h"
 
 namespace autofill_assistant {
@@ -43,6 +44,13 @@
       const Login& login,
       base::OnceCallback<void(bool, std::string)> callback) = 0;
 
+  // Generates new strong password. |form/field_signature| are used to fetch
+  // password requirements. |max_length| is the "max_length" attribute of input
+  // field that limits the length of value.
+  virtual std::string GeneratePassword(autofill::FormSignature form_signature,
+                                       autofill::FieldSignature field_signature,
+                                       uint64_t max_length) = 0;
+
   DISALLOW_COPY_AND_ASSIGN(WebsiteLoginFetcher);
 };
 
diff --git a/components/autofill_assistant/browser/website_login_fetcher_impl.cc b/components/autofill_assistant/browser/website_login_fetcher_impl.cc
index 4f8d624a..7c8e0dec 100644
--- a/components/autofill_assistant/browser/website_login_fetcher_impl.cc
+++ b/components/autofill_assistant/browser/website_login_fetcher_impl.cc
@@ -8,6 +8,8 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/task/post_task.h"
 #include "components/password_manager/core/browser/form_fetcher_impl.h"
+#include "components/password_manager/core/browser/password_generation_frame_helper.h"
+#include "components/password_manager/core/browser/password_manager_driver.h"
 #include "content/public/browser/browser_task_traits.h"
 #include "content/public/browser/browser_thread.h"
 
@@ -136,8 +138,9 @@
 };
 
 WebsiteLoginFetcherImpl::WebsiteLoginFetcherImpl(
-    const password_manager::PasswordManagerClient* client)
-    : client_(client), weak_ptr_factory_(this) {}
+    const password_manager::PasswordManagerClient* client,
+    password_manager::PasswordManagerDriver* driver)
+    : client_(client), driver_(driver), weak_ptr_factory_(this) {}
 
 WebsiteLoginFetcherImpl::~WebsiteLoginFetcherImpl() = default;
 
@@ -167,6 +170,16 @@
   pending_requests_.back()->Start();
 }
 
+std::string WebsiteLoginFetcherImpl::GeneratePassword(
+    autofill::FormSignature form_signature,
+    autofill::FieldSignature field_signature,
+    uint64_t max_length) {
+  return base::UTF16ToUTF8(
+      driver_->GetPasswordGenerationHelper()->GeneratePassword(
+          driver_->GetLastCommittedURL(), form_signature, field_signature,
+          max_length));
+}
+
 void WebsiteLoginFetcherImpl::OnRequestFinished(const PendingRequest* request) {
   base::EraseIf(pending_requests_, [request](const auto& candidate_request) {
     return candidate_request.get() == request;
diff --git a/components/autofill_assistant/browser/website_login_fetcher_impl.h b/components/autofill_assistant/browser/website_login_fetcher_impl.h
index 58ea3c2..bfd1d22 100644
--- a/components/autofill_assistant/browser/website_login_fetcher_impl.h
+++ b/components/autofill_assistant/browser/website_login_fetcher_impl.h
@@ -10,6 +10,7 @@
 
 namespace password_manager {
 class PasswordManagerClient;
+class PasswordManagerDriver;
 }  // namespace password_manager
 
 namespace autofill_assistant {
@@ -18,8 +19,8 @@
 // wraps access to the Chrome password manager.
 class WebsiteLoginFetcherImpl : public WebsiteLoginFetcher {
  public:
-  WebsiteLoginFetcherImpl(
-      const password_manager::PasswordManagerClient* client);
+  WebsiteLoginFetcherImpl(const password_manager::PasswordManagerClient* client,
+                          password_manager::PasswordManagerDriver* driver);
   ~WebsiteLoginFetcherImpl() override;
 
   // From WebsiteLoginFetcher:
@@ -29,6 +30,9 @@
   void GetPasswordForLogin(
       const Login& login,
       base::OnceCallback<void(bool, std::string)> callback) override;
+  std::string GeneratePassword(autofill::FormSignature form_signature,
+                               autofill::FieldSignature field_signature,
+                               uint64_t max_length) override;
 
  private:
   class PendingRequest;
@@ -39,6 +43,8 @@
 
   const password_manager::PasswordManagerClient* client_;
 
+  password_manager::PasswordManagerDriver* driver_;
+
   // Fetch requests owned by the password manager, released when they are
   // finished.
   std::vector<std::unique_ptr<PendingRequest>> pending_requests_;
diff --git a/components/browser_sync/profile_sync_components_factory_impl.cc b/components/browser_sync/profile_sync_components_factory_impl.cc
index 3610f8e..a05b1a1e 100644
--- a/components/browser_sync/profile_sync_components_factory_impl.cc
+++ b/components/browser_sync/profile_sync_components_factory_impl.cc
@@ -354,6 +354,18 @@
                     .get())));
   }
 
+#if !defined(OS_IOS)
+  if (!disabled_types.Has(syncer::SHARING_MESSAGE)) {
+    // Forward both full-sync and transport-only modes to the same delegate,
+    // since behavior for SHARING_MESSAGE does not differ. They both do not
+    // store data on persistent storage.
+    controllers.push_back(std::make_unique<ModelTypeController>(
+        syncer::SHARING_MESSAGE,
+        CreateForwardingControllerDelegate(syncer::SHARING_MESSAGE),
+        CreateForwardingControllerDelegate(syncer::SHARING_MESSAGE)));
+  }
+#endif  // !defined(OS_IOS)
+
   // Forward both full-sync and transport-only modes to the same delegate,
   // since behavior for USER_CONSENTS does not differ (they are always
   // persisted).
diff --git a/components/captive_portal/README.md b/components/captive_portal/README.md
new file mode 100644
index 0000000..44b26e3a
--- /dev/null
+++ b/components/captive_portal/README.md
@@ -0,0 +1,4 @@
+The captive portal component is a layered component. The core/ subdirectory
+includes code shared across all platforms, including iOS; code in core/
+cannot depend on the Content API. The content/ subdirectory, meanwhile, is
+used only on //content-based platforms and can freely use the Content API.
diff --git a/components/captive_portal/content/BUILD.gn b/components/captive_portal/content/BUILD.gn
new file mode 100644
index 0000000..77a9480
--- /dev/null
+++ b/components/captive_portal/content/BUILD.gn
@@ -0,0 +1,30 @@
+# Copyright 2020 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+import("//components/captive_portal/core/features.gni")
+
+source_set("content") {
+  sources = []
+
+  if (enable_captive_portal_detection) {
+    sources += [
+      "captive_portal_service.cc",
+      "captive_portal_service.h",
+    ]
+  }
+
+  public_deps = [
+    "//base",
+    "//components/captive_portal/core",
+    "//components/keyed_service/core",
+    "//components/prefs",
+    "//net",
+    "//services/network/public/cpp",
+    "//url",
+  ]
+
+  deps = [
+    "//components/embedder_support",
+    "//content/public/browser",
+  ]
+}
diff --git a/components/captive_portal/content/DEPS b/components/captive_portal/content/DEPS
new file mode 100644
index 0000000..40c52df6
--- /dev/null
+++ b/components/captive_portal/content/DEPS
@@ -0,0 +1,10 @@
+include_rules = [
+  "+components/captive_portal/core",
+  "+components/embedder_support",
+  "+components/keyed_service/core",
+  "+components/prefs",
+  "+content/public/browser",
+  "+services/network/public/cpp",
+  "+net",
+  "+url",
+]
diff --git a/chrome/browser/captive_portal/captive_portal_service.cc b/components/captive_portal/content/captive_portal_service.cc
similarity index 90%
rename from chrome/browser/captive_portal/captive_portal_service.cc
rename to components/captive_portal/content/captive_portal_service.cc
index fa24494..72a9977 100644
--- a/chrome/browser/captive_portal/captive_portal_service.cc
+++ b/components/captive_portal/content/captive_portal_service.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/captive_portal/captive_portal_service.h"
+#include "components/captive_portal/content/captive_portal_service.h"
 
 #include "base/bind.h"
 #include "base/bind_helpers.h"
@@ -10,13 +10,11 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/time/tick_clock.h"
 #include "build/build_config.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "components/captive_portal/captive_portal_types.h"
+#include "components/captive_portal/core/captive_portal_types.h"
 #include "components/embedder_support/pref_names.h"
 #include "components/prefs/pref_service.h"
 #include "content/public/browser/browser_context.h"
 #include "content/public/browser/browser_thread.h"
-#include "content/public/browser/notification_service.h"
 #include "content/public/browser/storage_partition.h"
 #include "net/traffic_annotation/network_traffic_annotation.h"
 
@@ -69,13 +67,12 @@
   // pointers, so have to use the histogram functions directly.
 
   // Record number of times the last result was received in a row.
-  base::HistogramBase* result_repeated_histogram =
-      base::Histogram::FactoryGet(
-          "CaptivePortal.ResultRepeated." + CaptivePortalResultToString(result),
-          1,  // min
-          100,  // max
-          100,  // bucket_count
-          base::Histogram::kUmaTargetedHistogramFlag);
+  base::HistogramBase* result_repeated_histogram = base::Histogram::FactoryGet(
+      "CaptivePortal.ResultRepeated." + CaptivePortalResultToString(result),
+      1,    // min
+      100,  // max
+      100,  // bucket_count
+      base::Histogram::kUmaTargetedHistogramFlag);
   result_repeated_histogram->Add(repeat_count);
 
   if (repeat_count == 0)
@@ -86,8 +83,8 @@
       base::Histogram::FactoryTimeGet(
           "CaptivePortal.ResultDuration." + CaptivePortalResultToString(result),
           base::TimeDelta::FromSeconds(1),  // min
-          base::TimeDelta::FromHours(1),  // max
-          50,  // bucket_count
+          base::TimeDelta::FromHours(1),    // max
+          50,                               // bucket_count
           base::Histogram::kUmaTargetedHistogramFlag);
   result_duration_histogram->AddTime(result_duration);
 }
@@ -101,22 +98,20 @@
       return DETECTION_RESULT_INTERNET_CONNECTED;
     case captive_portal::RESULT_NO_RESPONSE:
       if (is_ip) {
-        return is_https ?
-            DETECTION_RESULT_NO_RESPONSE_HTTPS_LANDING_URL_IP_ADDRESS :
-            DETECTION_RESULT_NO_RESPONSE_IP_ADDRESS;
+        return is_https
+                   ? DETECTION_RESULT_NO_RESPONSE_HTTPS_LANDING_URL_IP_ADDRESS
+                   : DETECTION_RESULT_NO_RESPONSE_IP_ADDRESS;
       }
-      return is_https ?
-          DETECTION_RESULT_NO_RESPONSE_HTTPS_LANDING_URL :
-          DETECTION_RESULT_NO_RESPONSE;
+      return is_https ? DETECTION_RESULT_NO_RESPONSE_HTTPS_LANDING_URL
+                      : DETECTION_RESULT_NO_RESPONSE;
     case captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL:
       if (is_ip) {
-        return is_https ?
-          DETECTION_RESULT_BEHIND_CAPTIVE_PORTAL_HTTPS_LANDING_URL_IP_ADDRESS :
-          DETECTION_RESULT_BEHIND_CAPTIVE_PORTAL_IP_ADDRESS;
+        return is_https
+                   ? DETECTION_RESULT_BEHIND_CAPTIVE_PORTAL_HTTPS_LANDING_URL_IP_ADDRESS
+                   : DETECTION_RESULT_BEHIND_CAPTIVE_PORTAL_IP_ADDRESS;
       }
-      return is_https ?
-          DETECTION_RESULT_BEHIND_CAPTIVE_PORTAL_HTTPS_LANDING_URL :
-          DETECTION_RESULT_BEHIND_CAPTIVE_PORTAL;
+      return is_https ? DETECTION_RESULT_BEHIND_CAPTIVE_PORTAL_HTTPS_LANDING_URL
+                      : DETECTION_RESULT_BEHIND_CAPTIVE_PORTAL;
     default:
       NOTREACHED();
       return DETECTION_RESULT_COUNT;
@@ -226,9 +221,7 @@
   // Start asynchronously.
   state_ = STATE_TIMER_RUNNING;
   check_captive_portal_timer_.Start(
-      FROM_HERE,
-      time_until_next_check,
-      this,
+      FROM_HERE, time_until_next_check, this,
       &CaptivePortalService::DetectCaptivePortalInternal);
 }
 
@@ -346,8 +339,7 @@
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   if (enabled_) {
     RecordRepeatHistograms(
-        last_detection_result_,
-        num_checks_with_same_result_,
+        last_detection_result_, num_checks_with_same_result_,
         GetCurrentTimeTicks() - first_check_time_with_same_result_);
   }
 }
@@ -363,11 +355,6 @@
   results.landing_url = landing_url;
   last_detection_result_ = result;
 
-  content::NotificationService::current()->Notify(
-      chrome::NOTIFICATION_CAPTIVE_PORTAL_CHECK_RESULT,
-      content::Source<content::BrowserContext>(browser_context_),
-      content::Details<Results>(&results));
-
   callback_list_.Notify(results);
 }
 
diff --git a/chrome/browser/captive_portal/captive_portal_service.h b/components/captive_portal/content/captive_portal_service.h
similarity index 96%
rename from chrome/browser/captive_portal/captive_portal_service.h
rename to components/captive_portal/content/captive_portal_service.h
index 76d33095..0c4310b 100644
--- a/chrome/browser/captive_portal/captive_portal_service.h
+++ b/components/captive_portal/content/captive_portal_service.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_CAPTIVE_PORTAL_CAPTIVE_PORTAL_SERVICE_H_
-#define CHROME_BROWSER_CAPTIVE_PORTAL_CAPTIVE_PORTAL_SERVICE_H_
+#ifndef COMPONENTS_CAPTIVE_PORTAL_CONTENT_CAPTIVE_PORTAL_SERVICE_H_
+#define COMPONENTS_CAPTIVE_PORTAL_CONTENT_CAPTIVE_PORTAL_SERVICE_H_
 
 #include <memory>
 
@@ -12,7 +12,7 @@
 #include "base/time/tick_clock.h"
 #include "base/time/time.h"
 #include "base/timer/timer.h"
-#include "components/captive_portal/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
 #include "components/keyed_service/core/keyed_service.h"
 #include "components/prefs/pref_member.h"
 #include "net/base/backoff_entry.h"
@@ -225,4 +225,4 @@
   DISALLOW_COPY_AND_ASSIGN(CaptivePortalService);
 };
 
-#endif  // CHROME_BROWSER_CAPTIVE_PORTAL_CAPTIVE_PORTAL_SERVICE_H_
+#endif  // COMPONENTS_CAPTIVE_PORTAL_CONTENT_CAPTIVE_PORTAL_SERVICE_H_
diff --git a/components/captive_portal/BUILD.gn b/components/captive_portal/core/BUILD.gn
similarity index 86%
rename from components/captive_portal/BUILD.gn
rename to components/captive_portal/core/BUILD.gn
index ab55e61..c31793a4 100644
--- a/components/captive_portal/BUILD.gn
+++ b/components/captive_portal/core/BUILD.gn
@@ -3,9 +3,12 @@
 # found in the LICENSE file.
 
 import("//build/buildflag_header.gni")
-import("//components/captive_portal/features.gni")
+import("//components/captive_portal/core/features.gni")
 
-component("captive_portal") {
+component("core") {
+  # Avoid clashes with other targets named "core".
+  output_name = "captive_portal_core"
+
   sources = [
     "captive_portal_detector.cc",
     "captive_portal_detector.h",
@@ -43,7 +46,7 @@
   ]
 
   deps = [
-    ":captive_portal",
+    ":core",
     "//base",
     "//net:test_support",
     "//services/network:test_support",
@@ -56,7 +59,7 @@
   sources = [ "captive_portal_detector_unittest.cc" ]
 
   deps = [
-    ":captive_portal",
+    ":core",
     ":test_support",
     "//base",
     "//net:test_support",
diff --git a/components/captive_portal/DEPS b/components/captive_portal/core/DEPS
similarity index 100%
rename from components/captive_portal/DEPS
rename to components/captive_portal/core/DEPS
diff --git a/components/captive_portal/captive_portal_detector.cc b/components/captive_portal/core/captive_portal_detector.cc
similarity index 98%
rename from components/captive_portal/captive_portal_detector.cc
rename to components/captive_portal/core/captive_portal_detector.cc
index 66c18a5..54e0b042 100644
--- a/components/captive_portal/captive_portal_detector.cc
+++ b/components/captive_portal/core/captive_portal_detector.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/captive_portal/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
 
 #include <utility>
 
diff --git a/components/captive_portal/captive_portal_detector.h b/components/captive_portal/core/captive_portal_detector.h
similarity index 91%
rename from components/captive_portal/captive_portal_detector.h
rename to components/captive_portal/core/captive_portal_detector.h
index 879cdeb..a541b27 100644
--- a/components/captive_portal/captive_portal_detector.h
+++ b/components/captive_portal/core/captive_portal_detector.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_CAPTIVE_PORTAL_CAPTIVE_PORTAL_DETECTOR_H_
-#define COMPONENTS_CAPTIVE_PORTAL_CAPTIVE_PORTAL_DETECTOR_H_
+#ifndef COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_DETECTOR_H_
+#define COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_DETECTOR_H_
 
 #include <memory>
 
@@ -13,8 +13,8 @@
 #include "base/memory/ref_counted.h"
 #include "base/sequence_checker.h"
 #include "base/time/time.h"
-#include "components/captive_portal/captive_portal_export.h"
-#include "components/captive_portal/captive_portal_types.h"
+#include "components/captive_portal/core/captive_portal_export.h"
+#include "components/captive_portal/core/captive_portal_types.h"
 #include "net/traffic_annotation/network_traffic_annotation.h"
 #include "services/network/public/cpp/simple_url_loader.h"
 #include "services/network/public/mojom/url_loader_factory.mojom.h"
@@ -123,4 +123,4 @@
 
 }  // namespace captive_portal
 
-#endif  // COMPONENTS_CAPTIVE_PORTAL_CAPTIVE_PORTAL_DETECTOR_H_
+#endif  // COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_DETECTOR_H_
diff --git a/components/captive_portal/captive_portal_detector_unittest.cc b/components/captive_portal/core/captive_portal_detector_unittest.cc
similarity index 95%
rename from components/captive_portal/captive_portal_detector_unittest.cc
rename to components/captive_portal/core/captive_portal_detector_unittest.cc
index 4eade3c..157b2b0f 100644
--- a/components/captive_portal/captive_portal_detector_unittest.cc
+++ b/components/captive_portal/core/captive_portal_detector_unittest.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/captive_portal/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
 
 #include <memory>
 
@@ -13,7 +13,7 @@
 #include "base/test/task_environment.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
-#include "components/captive_portal/captive_portal_testing_utils.h"
+#include "components/captive_portal/core/captive_portal_testing_utils.h"
 #include "net/base/net_errors.h"
 #include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -26,8 +26,7 @@
 class CaptivePortalClient {
  public:
   explicit CaptivePortalClient(CaptivePortalDetector* captive_portal_detector)
-      : num_results_received_(0) {
-  }
+      : num_results_received_(0) {}
 
   void OnPortalDetectionCompleted(
       const CaptivePortalDetector::Results& results) {
@@ -177,8 +176,8 @@
   // base has a function to get a time in the right format from a string, but
   // not the other way around.
   base::Time start_time;
-  ASSERT_TRUE(base::Time::FromString("Tue, 17 Apr 2012 18:02:00 GMT",
-                                     &start_time));
+  ASSERT_TRUE(
+      base::Time::FromString("Tue, 17 Apr 2012 18:02:00 GMT", &start_time));
   base::Time retry_after_time;
   ASSERT_TRUE(base::Time::FromString("Tue, 17 Apr 2012 18:02:51 GMT",
                                      &retry_after_time));
diff --git a/components/captive_portal/captive_portal_export.h b/components/captive_portal/core/captive_portal_export.h
similarity index 77%
rename from components/captive_portal/captive_portal_export.h
rename to components/captive_portal/core/captive_portal_export.h
index 761fe21..d565378e 100644
--- a/components/captive_portal/captive_portal_export.h
+++ b/components/captive_portal/core/captive_portal_export.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_CAPTIVE_PORTAL_CAPTIVE_PORTAL_EXPORT_H_
-#define COMPONENTS_CAPTIVE_PORTAL_CAPTIVE_PORTAL_EXPORT_H_
+#ifndef COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_EXPORT_H_
+#define COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_EXPORT_H_
 
 #if defined(COMPONENT_BUILD)
 #if defined(WIN32)
@@ -26,4 +26,4 @@
 #define CAPTIVE_PORTAL_EXPORT
 #endif
 
-#endif  // COMPONENTS_CAPTIVE_PORTAL_CAPTIVE_PORTAL_EXPORT_H_
+#endif  // COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_EXPORT_H_
diff --git a/components/captive_portal/captive_portal_metrics.cc b/components/captive_portal/core/captive_portal_metrics.cc
similarity index 88%
rename from components/captive_portal/captive_portal_metrics.cc
rename to components/captive_portal/core/captive_portal_metrics.cc
index 8b9de27..e156dbc1 100644
--- a/components/captive_portal/captive_portal_metrics.cc
+++ b/components/captive_portal/core/captive_portal_metrics.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/captive_portal/captive_portal_metrics.h"
+#include "components/captive_portal/core/captive_portal_metrics.h"
 
 #include "base/metrics/histogram_macros.h"
 
diff --git a/components/captive_portal/captive_portal_metrics.h b/components/captive_portal/core/captive_portal_metrics.h
similarity index 75%
rename from components/captive_portal/captive_portal_metrics.h
rename to components/captive_portal/core/captive_portal_metrics.h
index 90f1ade..f9f66c8 100644
--- a/components/captive_portal/captive_portal_metrics.h
+++ b/components/captive_portal/core/captive_portal_metrics.h
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_CAPTIVE_PORTAL_CAPTIVE_PORTAL_METRICS_H_
-#define COMPONENTS_CAPTIVE_PORTAL_CAPTIVE_PORTAL_METRICS_H_
+#ifndef COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_METRICS_H_
+#define COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_METRICS_H_
 
 #include "base/macros.h"
-#include "components/captive_portal/captive_portal_export.h"
+#include "components/captive_portal/core/captive_portal_export.h"
 
 namespace captive_portal {
 
@@ -30,4 +30,4 @@
 
 }  // namespace captive_portal
 
-#endif  // COMPONENTS_CAPTIVE_PORTAL_CAPTIVE_PORTAL_METRICS_H_
+#endif  // COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_METRICS_H_
diff --git a/components/captive_portal/captive_portal_testing_utils.cc b/components/captive_portal/core/captive_portal_testing_utils.cc
similarity index 95%
rename from components/captive_portal/captive_portal_testing_utils.cc
rename to components/captive_portal/core/captive_portal_testing_utils.cc
index 52b4536..fce55ff 100644
--- a/components/captive_portal/captive_portal_testing_utils.cc
+++ b/components/captive_portal/core/captive_portal_testing_utils.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/captive_portal/captive_portal_testing_utils.h"
+#include "components/captive_portal/core/captive_portal_testing_utils.h"
 
 #include "base/logging.h"
 #include "base/memory/ref_counted.h"
@@ -26,8 +26,7 @@
 CaptivePortalDetectorTestBase::CaptivePortalDetectorTestBase()
     : detector_(nullptr) {}
 
-CaptivePortalDetectorTestBase::~CaptivePortalDetectorTestBase() {
-}
+CaptivePortalDetectorTestBase::~CaptivePortalDetectorTestBase() {}
 
 void CaptivePortalDetectorTestBase::SetTime(const base::Time& time) {
   detector()->set_time_for_testing(time);
diff --git a/components/captive_portal/captive_portal_testing_utils.h b/components/captive_portal/core/captive_portal_testing_utils.h
similarity index 82%
rename from components/captive_portal/captive_portal_testing_utils.h
rename to components/captive_portal/core/captive_portal_testing_utils.h
index 3559be8b..b5cc2d16 100644
--- a/components/captive_portal/captive_portal_testing_utils.h
+++ b/components/captive_portal/core/captive_portal_testing_utils.h
@@ -2,13 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef COMPONENTS_CAPTIVE_PORTAL_CAPTIVE_PORTAL_TESTING_UTILS_H_
-#define COMPONENTS_CAPTIVE_PORTAL_CAPTIVE_PORTAL_TESTING_UTILS_H_
+#ifndef COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_TESTING_UTILS_H_
+#define COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_TESTING_UTILS_H_
 
 #include <string>
 
 #include "base/macros.h"
-#include "components/captive_portal/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
 #include "services/network/test/test_url_loader_factory.h"
 
 namespace base {
@@ -54,4 +54,4 @@
 
 }  // namespace captive_portal
 
-#endif  // COMPONENTS_CAPTIVE_PORTAL_CAPTIVE_PORTAL_TESTING_UTILS_H_
+#endif  // COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_TESTING_UTILS_H_
diff --git a/components/captive_portal/captive_portal_types.cc b/components/captive_portal/core/captive_portal_types.cc
similarity index 82%
rename from components/captive_portal/captive_portal_types.cc
rename to components/captive_portal/core/captive_portal_types.cc
index ffb93dc9..806a2d0db 100644
--- a/components/captive_portal/captive_portal_types.cc
+++ b/components/captive_portal/core/captive_portal_types.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "components/captive_portal/captive_portal_types.h"
+#include "components/captive_portal/core/captive_portal_types.h"
 
 #include "base/logging.h"
 #include "base/stl_util.h"
@@ -12,10 +12,10 @@
 namespace {
 
 const char* const kCaptivePortalResultNames[] = {
-  "InternetConnected",
-  "NoResponse",
-  "BehindCaptivePortal",
-  "NumCaptivePortalResults",
+    "InternetConnected",
+    "NoResponse",
+    "BehindCaptivePortal",
+    "NumCaptivePortalResults",
 };
 static_assert(base::size(kCaptivePortalResultNames) == RESULT_COUNT + 1,
               "kCaptivePortalResultNames should have "
@@ -23,7 +23,6 @@
 
 }  // namespace
 
-
 std::string CaptivePortalResultToString(CaptivePortalResult result) {
   DCHECK_GE(result, 0);
   DCHECK_LT(static_cast<unsigned int>(result),
diff --git a/components/captive_portal/captive_portal_types.h b/components/captive_portal/core/captive_portal_types.h
similarity index 76%
rename from components/captive_portal/captive_portal_types.h
rename to components/captive_portal/core/captive_portal_types.h
index 57319d73..68b1c5f 100644
--- a/components/captive_portal/captive_portal_types.h
+++ b/components/captive_portal/core/captive_portal_types.h
@@ -2,12 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef NET_CAPTIVE_PORTAL_CAPTIVE_PORTAL_TYPES_H_
-#define NET_CAPTIVE_PORTAL_CAPTIVE_PORTAL_TYPES_H_
+#ifndef COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_TYPES_H_
+#define COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_TYPES_H_
 
 #include <string>
 
-#include "components/captive_portal/captive_portal_export.h"
+#include "components/captive_portal/core/captive_portal_export.h"
 
 namespace captive_portal {
 
@@ -28,4 +28,4 @@
 
 }  // namespace captive_portal
 
-#endif  // NET_CAPTIVE_PORTAL_CAPTIVE_PORTAL_TYPES_H_
+#endif  // COMPONENTS_CAPTIVE_PORTAL_CORE_CAPTIVE_PORTAL_TYPES_H_
diff --git a/components/captive_portal/features.gni b/components/captive_portal/core/features.gni
similarity index 100%
rename from components/captive_portal/features.gni
rename to components/captive_portal/core/features.gni
diff --git a/components/exo/client_controlled_shell_surface.cc b/components/exo/client_controlled_shell_surface.cc
index 6db3b7c..91aaf01 100644
--- a/components/exo/client_controlled_shell_surface.cc
+++ b/components/exo/client_controlled_shell_surface.cc
@@ -16,7 +16,6 @@
 #include "ash/public/cpp/immersive/immersive_fullscreen_controller.h"
 #include "ash/public/cpp/rounded_corner_decorator.h"
 #include "ash/public/cpp/shell_window_ids.h"
-#include "ash/public/cpp/window_backdrop.h"
 #include "ash/public/cpp/window_pin_type.h"
 #include "ash/public/cpp/window_properties.h"
 #include "ash/public/cpp/window_state_type.h"
@@ -1194,15 +1193,14 @@
 
   // Always create a backdrop regardless of the geometry because
   // maximized/fullscreen widget's geometry can be cropped.
-  bool enable_backdrop = widget_->IsFullscreen() || widget_->IsMaximized();
+  bool enable_backdrop = (widget_->IsFullscreen() || widget_->IsMaximized());
 
-  ash::WindowBackdrop::BackdropMode target_backdrop_mode =
-      enable_backdrop ? ash::WindowBackdrop::BackdropMode::kEnabled
-                      : ash::WindowBackdrop::BackdropMode::kAuto;
+  ash::BackdropWindowMode target_backdrop_mode =
+      enable_backdrop ? ash::BackdropWindowMode::kEnabled
+                      : ash::BackdropWindowMode::kAutoOpaque;
 
-  ash::WindowBackdrop* window_backdrop = ash::WindowBackdrop::Get(window);
-  if (window_backdrop->mode() != target_backdrop_mode)
-    window_backdrop->SetBackdropMode(target_backdrop_mode);
+  if (window->GetProperty(ash::kBackdropWindowMode) != target_backdrop_mode)
+    window->SetProperty(ash::kBackdropWindowMode, target_backdrop_mode);
 }
 
 void ClientControlledShellSurface::UpdateFrameWidth() {
diff --git a/components/policy/core/common/configuration_policy_provider.cc b/components/policy/core/common/configuration_policy_provider.cc
index 5478e3d..2885d508 100644
--- a/components/policy/core/common/configuration_policy_provider.cc
+++ b/components/policy/core/common/configuration_policy_provider.cc
@@ -5,12 +5,21 @@
 #include "components/policy/core/common/configuration_policy_provider.h"
 
 #include "base/callback.h"
+#include "base/lazy_instance.h"
 #include "components/policy/core/common/extension_policy_migrator.h"
 #include "components/policy/core/common/external_data_fetcher.h"
 #include "components/policy/core/common/policy_map.h"
 
 namespace policy {
 
+namespace {
+
+// static
+base::LazyInstance<std::vector<std::unique_ptr<ExtensionPolicyMigrator>>>::Leaky
+    g_migrators = LAZY_INSTANCE_INITIALIZER;
+
+}  // namespace
+
 ConfigurationPolicyProvider::Observer::~Observer() = default;
 
 ConfigurationPolicyProvider::ConfigurationPolicyProvider()
@@ -20,6 +29,12 @@
   DCHECK(!initialized_);
 }
 
+// static
+void ConfigurationPolicyProvider::SetMigrators(
+    std::vector<std::unique_ptr<ExtensionPolicyMigrator>> migrators) {
+  g_migrators.Get() = std::move(migrators);
+}
+
 void ConfigurationPolicyProvider::Init(SchemaRegistry* registry) {
   schema_registry_ = registry;
   schema_registry_->AddObserver(this);
@@ -41,16 +56,10 @@
   return true;
 }
 
-void ConfigurationPolicyProvider::AddMigrator(
-    std::unique_ptr<ExtensionPolicyMigrator> migrator) {
-  DCHECK(migrator);
-  migrators_.push_back(std::move(migrator));
-}
-
 void ConfigurationPolicyProvider::UpdatePolicy(
     std::unique_ptr<PolicyBundle> bundle) {
   if (bundle) {
-    for (const auto& migrator : migrators_)
+    for (const auto& migrator : g_migrators.Get())
       migrator->Migrate(bundle.get());
     policy_bundle_.Swap(bundle.get());
   } else {
diff --git a/components/policy/core/common/configuration_policy_provider.h b/components/policy/core/common/configuration_policy_provider.h
index 5147701..8abec89e 100644
--- a/components/policy/core/common/configuration_policy_provider.h
+++ b/components/policy/core/common/configuration_policy_provider.h
@@ -39,6 +39,9 @@
   // to post to the FILE thread, for example.
   ~ConfigurationPolicyProvider() override;
 
+  static void SetMigrators(
+      std::vector<std::unique_ptr<ExtensionPolicyMigrator>> migrators);
+
   // Invoked as soon as the main message loops are spinning. Policy providers
   // are created early during startup to provide the initial policies; the
   // Init() call allows them to perform initialization tasks that require
@@ -73,10 +76,6 @@
   virtual void AddObserver(Observer* observer);
   virtual void RemoveObserver(Observer* observer);
 
-  // Adds an ExtensionPolicyMigrator to be run before OnUpdatePolicy() is
-  // called.
-  void AddMigrator(std::unique_ptr<ExtensionPolicyMigrator> migrator);
-
   // SchemaRegistry::Observer:
   void OnSchemaRegistryUpdated(bool has_new_schemas) override;
   void OnSchemaRegistryReady() override;
@@ -103,8 +102,6 @@
 
   base::ObserverList<Observer, true>::Unchecked observer_list_;
 
-  std::vector<std::unique_ptr<ExtensionPolicyMigrator>> migrators_;
-
   DISALLOW_COPY_AND_ASSIGN(ConfigurationPolicyProvider);
 };
 
diff --git a/components/policy/core/common/configuration_policy_provider_test.cc b/components/policy/core/common/configuration_policy_provider_test.cc
index 33dee1c..ef08125 100644
--- a/components/policy/core/common/configuration_policy_provider_test.cc
+++ b/components/policy/core/common/configuration_policy_provider_test.cc
@@ -137,6 +137,7 @@
 
 void PolicyTestBase::TearDown() {
   task_environment_.RunUntilIdle();
+  ConfigurationPolicyProvider::SetMigrators({});
 }
 
 bool PolicyTestBase::RegisterSchema(const PolicyNamespace& ns,
@@ -350,9 +351,11 @@
 };
 
 TEST_P(ConfigurationPolicyProviderTest, AddMigrator) {
-  MockPolicyMigrator* migrator = new MockPolicyMigrator;
+  auto migrator = std::make_unique<MockPolicyMigrator>();
   EXPECT_CALL(*migrator, Migrate(_));
-  provider_->AddMigrator(std::unique_ptr<ExtensionPolicyMigrator>(migrator));
+  std::vector<std::unique_ptr<ExtensionPolicyMigrator>> migrators;
+  migrators.emplace_back(std::move(migrator));
+  ConfigurationPolicyProvider::SetMigrators(std::move(migrators));
   provider_->RefreshPolicies();
   task_environment_.RunUntilIdle();
 }
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index 285d1c8..2f4c2da 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -984,6 +984,7 @@
         'PrintingSizeDefault',
         'PrintingSendUsernameAndFilenameEnabled',
         'PrintJobHistoryExpirationPeriod',
+        'PrintingAPIExtensionsWhitelist',
         'CloudPrintSubmitEnabled',
         'DisablePrintPreview',
         'PrintHeaderFooter',
@@ -2524,6 +2525,27 @@
       The policy value should be specified in days.''',
     },
     {
+      'name': 'PrintingAPIExtensionsWhitelist',
+      'owners': ['nikitapodguzov@chromium.org'],
+      'type': 'list',
+      'schema': {
+        'type': 'array',
+        'items': { 'type': 'string' },
+      },
+      'supported_on': ['chrome_os:81-'],
+      'features': {
+        'dynamic_refresh': True,
+        'per_profile': True
+      },
+      'example_value': ['abcdefghabcdefghabcdefghabcdefgh'],
+      'id': 664,
+      'caption': '''Extensions allowed to skip confirmation dialog when sending print jobs via chrome.printing API''',
+      'tags': [],
+      'desc': '''This policy specifies the allowed extensions to skip print job confirmation dialog when they use the <ph name="PRINTING_API">Printing API</ph> function <ph name="SUBMIT_JOB_FUNCTION">chrome.printing.submitJob()</ph> for sending a print job.
+
+      If an extension is not in the list, or the list is not set, the print job confirmation dialog will be shown to the user for every <ph name="SUBMIT_JOB_FUNCTION">chrome.printing.submitJob()</ph> function call.'''
+    },
+    {
       'name': 'ForceSafeSearch',
       'owners': ['sergiu@chromium.org', 'igorcov@chromium.org'],
       'type': 'main',
@@ -20383,6 +20405,6 @@
   ],
   'placeholders': [],
   'deleted_policy_ids': [412, 546, 562, 569, 578],
-  'highest_id_currently_used': 663,
+  'highest_id_currently_used': 664,
   'highest_atomic_group_id_currently_used': 38
 }
diff --git a/components/security_interstitials/content/BUILD.gn b/components/security_interstitials/content/BUILD.gn
index 59068b7..509cab3 100644
--- a/components/security_interstitials/content/BUILD.gn
+++ b/components/security_interstitials/content/BUILD.gn
@@ -52,7 +52,7 @@
     ":proto",
     "//base",
     "//build:branding_buildflags",
-    "//components/captive_portal",
+    "//components/captive_portal/core",
     "//components/network_time",
     "//components/prefs:prefs",
     "//components/resources",
diff --git a/components/security_interstitials/content/captive_portal_blocking_page.cc b/components/security_interstitials/content/captive_portal_blocking_page.cc
index 2d14dbb..deb5cdaf 100644
--- a/components/security_interstitials/content/captive_portal_blocking_page.cc
+++ b/components/security_interstitials/content/captive_portal_blocking_page.cc
@@ -13,8 +13,8 @@
 #include "base/strings/utf_string_conversions.h"
 #include "base/values.h"
 #include "build/build_config.h"
-#include "components/captive_portal/captive_portal_detector.h"
-#include "components/captive_portal/captive_portal_metrics.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_metrics.h"
 #include "components/safe_browsing/core/common/safe_browsing_prefs.h"
 #include "components/security_interstitials/content/cert_report_helper.h"
 #include "components/security_interstitials/content/security_interstitial_controller_client.h"
diff --git a/components/security_interstitials/content/ssl_error_navigation_throttle.cc b/components/security_interstitials/content/ssl_error_navigation_throttle.cc
index 2dff041..d1f031c 100644
--- a/components/security_interstitials/content/ssl_error_navigation_throttle.cc
+++ b/components/security_interstitials/content/ssl_error_navigation_throttle.cc
@@ -16,13 +16,11 @@
 SSLErrorNavigationThrottle::SSLErrorNavigationThrottle(
     content::NavigationHandle* navigation_handle,
     std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
-    network_time::NetworkTimeTracker* network_time_tracker,
     SSLErrorNavigationThrottle::HandleSSLErrorCallback
         handle_ssl_error_callback,
     IsInHostedAppCallback is_in_hosted_app_callback)
     : content::NavigationThrottle(navigation_handle),
       ssl_cert_reporter_(std::move(ssl_cert_reporter)),
-      network_time_tracker_(network_time_tracker),
       handle_ssl_error_callback_(std::move(handle_ssl_error_callback)),
       is_in_hosted_app_callback_(std::move(is_in_hosted_app_callback)) {}
 
@@ -111,7 +109,7 @@
   // navigation.
   std::move(handle_ssl_error_callback)
       .Run(web_contents, net_error, ssl_info, request_url,
-           std::move(ssl_cert_reporter), network_time_tracker_,
+           std::move(ssl_cert_reporter),
            base::BindOnce(&SSLErrorNavigationThrottle::ShowInterstitial,
                           weak_ptr_factory_.GetWeakPtr(), net_error));
 }
diff --git a/components/security_interstitials/content/ssl_error_navigation_throttle.h b/components/security_interstitials/content/ssl_error_navigation_throttle.h
index a8be453b..60370ca 100644
--- a/components/security_interstitials/content/ssl_error_navigation_throttle.h
+++ b/components/security_interstitials/content/ssl_error_navigation_throttle.h
@@ -20,10 +20,6 @@
 class WebContents;
 }  // namespace content
 
-namespace network_time {
-class NetworkTimeTracker;
-}
-
 namespace security_interstitials {
 class SecurityInterstitialPage;
 }  // namespace security_interstitials
@@ -42,7 +38,6 @@
       const net::SSLInfo& ssl_info,
       const GURL& request_url,
       std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
-      network_time::NetworkTimeTracker* network_time_tracker,
       base::OnceCallback<void(
           std::unique_ptr<security_interstitials::SecurityInterstitialPage>)>
           blocking_page_ready_callback)>
@@ -60,7 +55,6 @@
   explicit SSLErrorNavigationThrottle(
       content::NavigationHandle* handle,
       std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
-      network_time::NetworkTimeTracker* network_time_tracker,
       HandleSSLErrorCallback handle_ssl_error_callback,
       IsInHostedAppCallback is_in_hosted_app_callback);
   ~SSLErrorNavigationThrottle() override;
@@ -85,7 +79,6 @@
           blocking_page);
 
   std::unique_ptr<SSLCertReporter> ssl_cert_reporter_;
-  network_time::NetworkTimeTracker* network_time_tracker_;
   HandleSSLErrorCallback handle_ssl_error_callback_;
   IsInHostedAppCallback is_in_hosted_app_callback_;
   base::WeakPtrFactory<SSLErrorNavigationThrottle> weak_ptr_factory_{this};
diff --git a/components/security_interstitials/content/ssl_error_navigation_throttle_unittest.cc b/components/security_interstitials/content/ssl_error_navigation_throttle_unittest.cc
index d15d3975..0ffced24 100644
--- a/components/security_interstitials/content/ssl_error_navigation_throttle_unittest.cc
+++ b/components/security_interstitials/content/ssl_error_navigation_throttle_unittest.cc
@@ -92,7 +92,6 @@
     const net::SSLInfo& ssl_info,
     const GURL& request_url,
     std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
-    network_time::NetworkTimeTracker* network_time_tracker,
     base::OnceCallback<
         void(std::unique_ptr<security_interstitials::SecurityInterstitialPage>)>
         blocking_page_ready_callback) {
@@ -121,7 +120,6 @@
       : SSLErrorNavigationThrottle(
             handle,
             std::make_unique<FakeSSLCertReporter>(),
-            /*network_time_tracker=*/nullptr,
             base::BindOnce(&MockHandleSSLError, async_handle_ssl_error),
             base::BindOnce(&IsInHostedApp)),
         on_cancel_deferred_navigation_(
diff --git a/components/sync/protocol/client_commands.proto b/components/sync/protocol/client_commands.proto
index 19c17129..c171d67 100644
--- a/components/sync/protocol/client_commands.proto
+++ b/components/sync/protocol/client_commands.proto
@@ -19,7 +19,7 @@
 message CustomNudgeDelay {
   optional int32 datatype_id = 1;  // Datatype id.
   optional int32 delay_ms = 2;     // Delay in milliseconds.
-};
+}
 
 message ClientCommand {
   // Time to wait before sending any requests to the server.
@@ -47,4 +47,4 @@
   // |sessions_commit_delay_seconds|
   // New in M39.
   repeated CustomNudgeDelay custom_nudge_delays = 8;
-};
+}
diff --git a/components/sync/protocol/encryption.proto b/components/sync/protocol/encryption.proto
index b663cff..418c8043 100644
--- a/components/sync/protocol/encryption.proto
+++ b/components/sync/protocol/encryption.proto
@@ -31,4 +31,4 @@
 message EncryptedData {
   optional string key_name = 1;
   optional string blob = 2;
-};
+}
diff --git a/components/sync/protocol/get_updates_caller_info.proto b/components/sync/protocol/get_updates_caller_info.proto
index 2e428d8..8c1fc28c 100644
--- a/components/sync/protocol/get_updates_caller_info.proto
+++ b/components/sync/protocol/get_updates_caller_info.proto
@@ -60,4 +60,4 @@
   // TODO(crbug.com/510165): Move this bool out of GetUpdatesCallerInfo so that
   // GetUpdatesCallerInfo can eventually be removed.
   optional bool notifications_enabled = 2;
-};
+}
diff --git a/components/sync/protocol/password_specifics.proto b/components/sync/protocol/password_specifics.proto
index 772edfc..40fcf1e 100644
--- a/components/sync/protocol/password_specifics.proto
+++ b/components/sync/protocol/password_specifics.proto
@@ -119,7 +119,7 @@
 // Contains the password specifics metadata which simplifies its lookup.
 message PasswordSpecificsMetadata {
   optional string url = 1;
-};
+}
 
 // Properties of password sync objects.
 message PasswordSpecifics {
diff --git a/components/sync/protocol/proto_visitors.h b/components/sync/protocol/proto_visitors.h
index 2b7afa4..16f6324a 100644
--- a/components/sync/protocol/proto_visitors.h
+++ b/components/sync/protocol/proto_visitors.h
@@ -795,6 +795,7 @@
 }
 
 VISIT_PROTO_FIELDS(const sync_pb::SharingMessageSpecifics& proto) {
+  VISIT(message_id);
   VISIT(channel_configuration);
   VISIT_BYTES(payload);
 }
diff --git a/components/sync/protocol/sharing_message_specifics.proto b/components/sync/protocol/sharing_message_specifics.proto
index 25e09d9..5b27f8e 100644
--- a/components/sync/protocol/sharing_message_specifics.proto
+++ b/components/sync/protocol/sharing_message_specifics.proto
@@ -17,6 +17,9 @@
 package sync_pb;
 
 message SharingMessageSpecifics {
+  // Unique identifier of message.
+  optional string message_id = 1;
+
   message ChannelConfiguration {
     message ServerChannelConfiguration {
       // Where to send the message to.
@@ -47,13 +50,13 @@
     }
   }
 
-  optional ChannelConfiguration channel_configuration = 1;
+  optional ChannelConfiguration channel_configuration = 2;
 
   // Payload encrypted using the target user keys according to WebPush
   // encryption scheme. The payload has to be a valid
   // chrome/browser/sharing/proto/sharing_message.proto serialized using
   // SerializeToString.
-  optional bytes payload = 2;
+  optional bytes payload = 3;
 }
 
 // Used for the server to return fine grained commit errors back to the client.
diff --git a/components/sync/protocol/sync.proto b/components/sync/protocol/sync.proto
index ca34c06..50861bc 100644
--- a/components/sync/protocol/sync.proto
+++ b/components/sync/protocol/sync.proto
@@ -402,7 +402,7 @@
   // and the code has been removed as of M66.
   reserved 26;
   reserved "attachment_id";
-};
+}
 
 // This message contains diagnostic information used to correlate
 // commit-related traffic with extensions-related mutations to the
@@ -416,7 +416,7 @@
   // How many times the extension successfully invoked a write
   // operation through the bookmarks API since the last CommitMessage.
   optional uint32 bookmark_writes_since_last_commit = 2;
-};
+}
 
 // Client specific configuration information.
 message ClientConfigParams {
@@ -432,7 +432,7 @@
   // chrome account. If multiple accounts are present in the cookie jar, a
   // mismatch implies all of them are different from the chrome account.
   optional bool cookie_jar_mismatch = 3;
-};
+}
 
 message CommitMessage {
   repeated SyncEntity entries = 1;
@@ -459,7 +459,7 @@
   // compression, this field should not be set. The server can ignore the
   // padding.
   optional string padding = 6;
-};
+}
 
 // This message communicates additional per-type information related to
 // requests with origin GU_TRIGGER.  This message is not relevant when any
@@ -687,19 +687,19 @@
 
   reserved 4;
   reserved "requested_types";
-};
+}
 
 // Message from a client asking the server to clear its data.
 message ClearServerDataMessage {
   // No arguments needed as the store birthday and user identifier are part of
   // an enclosing message.
-};
+}
 
 // Response to a ClearServerData request.
 message ClearServerDataResponse {
   // No result fields necessary. Success/failure is indicated in
   // ClientToServerResponse.
-};
+}
 
 // The client must preserve, store, and resend the chip bag with
 // every request.  The server depends on the chip bag in order
@@ -803,7 +803,7 @@
   // Identifies this ClientToServerMessage as a clear server data request. This
   // field is present when message_contents is CLEAR_SERVER_DATA.
   optional ClearServerDataMessage clear_server_data = 15;
-};
+}
 
 // This request allows the client to convert a specific crash identifier
 // into more general information (e.g. hash of the crashing call stack)
@@ -873,7 +873,7 @@
       SharingMessageCommitError sharing_message_error = 11;
     }
   }
-};
+}
 
 message GetUpdatesResponse {
   // New sync entries that the client should apply.
@@ -917,7 +917,7 @@
 
   // Set of optional datatype contexts server mutations.
   repeated DataTypeContext context_mutations = 7;
-};
+}
 
 message ClientToServerResponse {
   optional CommitResponse commit = 1;
@@ -975,15 +975,15 @@
   // Present if this ClientToServerResponse is in response to a ClearServerData
   // request.
   optional ClearServerDataResponse clear_server_data = 15;
-};
+}
 
 // A message to notify the server of certain sync events. Idempotent. Send these
 // to the /event endpoint.
 message EventRequest {
   optional SyncDisabledEvent sync_disabled = 1;
-};
+}
 
-message EventResponse {};
+message EventResponse {}
 
 // A message indicating that the sync engine has been disabled on a client.
 message SyncDisabledEvent {
@@ -992,4 +992,4 @@
 
   // The store birthday that the client was using before disabling sync.
   optional string store_birthday = 2;
-};
+}
diff --git a/components/sync/protocol/theme_specifics.proto b/components/sync/protocol/theme_specifics.proto
index 7418b521..a145b18 100644
--- a/components/sync/protocol/theme_specifics.proto
+++ b/components/sync/protocol/theme_specifics.proto
@@ -42,7 +42,7 @@
   message AutogeneratedTheme {
     // SkColor used to autogenerate theme.
     optional uint32 color = 1;
-  };
+  }
 
   // If set, autogenerated theme is used.
   optional AutogeneratedTheme autogenerated_theme = 6;
diff --git a/components/test/data/autofill_assistant/html/form_target_website.html b/components/test/data/autofill_assistant/html/form_target_website.html
index 8b0b8ba..5fac4e5 100644
--- a/components/test/data/autofill_assistant/html/form_target_website.html
+++ b/components/test/data/autofill_assistant/html/form_target_website.html
@@ -68,5 +68,14 @@
         EMail: <input type="text" id="email" name="email" autocomplete="email"/>
       </form>
     </div>
+
+    <h4>Password Form</h4>
+    <div>
+      <form id="form3" action="https://example.com/" method="post">
+        Username: <input type="text" id="username" name="username"><br>
+        Password: <input type="password" id="password" name="password">
+      </form>
+    </div>
+
   </body>
 </html>
diff --git a/components/unified_consent/unified_consent_metrics.cc b/components/unified_consent/unified_consent_metrics.cc
index 3c8b06a1..e235a4a6 100644
--- a/components/unified_consent/unified_consent_metrics.cc
+++ b/components/unified_consent/unified_consent_metrics.cc
@@ -39,25 +39,6 @@
   kMaxValue = kSync
 };
 
-// Records a sample in the SyncAndGoogleServicesSettings histogram. Wrapped in a
-// function to avoid code size issues caused by histogram macros.
-void RecordSettingsHistogramSample(SettingsHistogramValue value) {
-  UMA_HISTOGRAM_ENUMERATION("UnifiedConsent.SyncAndGoogleServicesSettings",
-                            value);
-}
-
-// Checks if a pref is enabled and if so, records a sample in the
-// SyncAndGoogleServicesSettings histogram. Returns true if a sample was
-// recorded.
-bool RecordSettingsHistogramFromPref(const char* pref_name,
-                                     PrefService* pref_service,
-                                     SettingsHistogramValue value) {
-  if (!pref_service->GetBoolean(pref_name))
-    return false;
-  RecordSettingsHistogramSample(value);
-  return true;
-}
-
 void RecordSyncDataTypeSample(SyncDataType data_type) {
   UMA_HISTOGRAM_ENUMERATION(
       "UnifiedConsent.SyncAndGoogleServicesSettings.AfterAdvancedOptIn."
@@ -117,11 +98,10 @@
 }  // namespace
 
 void RecordSettingsHistogram(PrefService* pref_service) {
-  bool metric_recorded = RecordSettingsHistogramFromPref(
-      prefs::kUrlKeyedAnonymizedDataCollectionEnabled, pref_service,
-      metrics::SettingsHistogramValue::kUrlKeyedAnonymizedDataCollection);
-  if (!metric_recorded)
-    RecordSettingsHistogramSample(metrics::SettingsHistogramValue::kNone);
+  bool is_enabled =
+      pref_service->GetBoolean(prefs::kUrlKeyedAnonymizedDataCollectionEnabled);
+  UMA_HISTOGRAM_BOOLEAN(
+      "UnifiedConsent.MakeSearchesAndBrowsingBetter.OnStartup", is_enabled);
 }
 
 void RecordSyncSetupDataTypesHistrogam(syncer::SyncUserSettings* sync_settings,
diff --git a/components/unified_consent/unified_consent_metrics.h b/components/unified_consent/unified_consent_metrics.h
index 1431cd1..0e4f26e 100644
--- a/components/unified_consent/unified_consent_metrics.h
+++ b/components/unified_consent/unified_consent_metrics.h
@@ -13,22 +13,6 @@
 
 namespace unified_consent {
 namespace metrics {
-
-// Google services that can be toggled in user settings.
-// Used in histograms. Do not change existing values, append new values at the
-// end.
-enum class SettingsHistogramValue {
-  kNone = 0,
-  kUnifiedConsentGiven = 1,
-  kUserEvents = 2,
-  kUrlKeyedAnonymizedDataCollection = 3,
-  kSafeBrowsingExtendedReporting = 4,
-  kSpellCheck = 5,
-  kAllServicesWereEnabled = 6,
-
-  kMaxValue = kAllServicesWereEnabled
-};
-
 // Records settings entries in the SyncAndGoogleServicesSettings.
 // kNone is recorded when none of the settings is enabled.
 void RecordSettingsHistogram(PrefService* pref_service);
diff --git a/components/viz/service/display/renderer_pixeltest.cc b/components/viz/service/display/renderer_pixeltest.cc
index 9401262..b492d34 100644
--- a/components/viz/service/display/renderer_pixeltest.cc
+++ b/components/viz/service/display/renderer_pixeltest.cc
@@ -2098,7 +2098,13 @@
       FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false)));
 }
 
-TYPED_TEST(RendererPixelTest, FastPassSaturateFilter) {
+// Crashes on Linux only. http://crbug.com/1044841
+#if defined(OS_LINUX)
+#define MAYBE_FastPassSaturateFilter DISABLED_FastPassSaturateFilter
+#else
+#define MAYBE_FastPassSaturateFilter FastPassSaturateFilter
+#endif
+TYPED_TEST(RendererPixelTest, MAYBE_FastPassSaturateFilter) {
   gfx::Rect viewport_rect(this->device_viewport_size_);
 
   int root_pass_id = 1;
@@ -2220,7 +2226,15 @@
       FuzzyForSoftwareOnlyPixelComparator<TypeParam>(false)));
 }
 
-TYPED_TEST(RendererPixelTest, FastPassColorFilterAlphaTranslation) {
+// Crashes on Linux only. http://crbug.com/1044841
+#if defined(OS_LINUX)
+#define MAYBE_FastPassColorFilterAlphaTranslation \
+  DISABLED_FastPassColorFilterAlphaTranslation
+#else
+#define MAYBE_FastPassColorFilterAlphaTranslation \
+  FastPassColorFilterAlphaTranslation
+#endif
+TYPED_TEST(RendererPixelTest, MAYBE_FastPassColorFilterAlphaTranslation) {
   gfx::Rect viewport_rect(this->device_viewport_size_);
 
   int root_pass_id = 1;
@@ -4538,7 +4552,13 @@
 
 // This draws a render pass with 2 solid color quads one of which has a rounded
 // corner. The render pass itself also has a rounded corner.
-TYPED_TEST(RendererPixelTest, RoundedCornerOnRenderPass) {
+// Crashes on Linux only. http://crbug.com/1044841
+#if defined(OS_LINUX)
+#define MAYBE_RoundedCornerOnRenderPass DISABLED_RoundedCornerOnRenderPass
+#else
+#define MAYBE_RoundedCornerOnRenderPass RoundedCornerOnRenderPass
+#endif
+TYPED_TEST(RendererPixelTest, MAYBE_RoundedCornerOnRenderPass) {
   gfx::Rect viewport_rect(this->device_viewport_size_);
   constexpr int kInset = 20;
   constexpr int kCornerRadius = 20;
diff --git a/components/zucchini/reloc_elf.cc b/components/zucchini/reloc_elf.cc
index eef1c96..d4857e86 100644
--- a/components/zucchini/reloc_elf.cc
+++ b/components/zucchini/reloc_elf.cc
@@ -119,10 +119,14 @@
     }
     if (target_rva == kInvalidRva)
       continue;
+    // TODO(huangs): Make the check more strict: The reference body should not
+    // straddle section boundary.
+    offset_t target = target_rva_to_offset_.Convert(target_rva);
+    if (target == kInvalidOffset)
+      continue;
     // |target| will be used to obtain abs32 references, so we must ensure that
     // it lies inside |image_|.
-    offset_t target = target_rva_to_offset_.Convert(target_rva);
-    if (target == kInvalidOffset || !image_.covers({target, sizeof(offset_t)}))
+    if (!image_.covers({target, WidthOf(bitness_)}))
       continue;
     offset_t location = cursor_;
     cursor_ += cur_entry_size;
diff --git a/components/zucchini/reloc_elf_unittest.cc b/components/zucchini/reloc_elf_unittest.cc
index 5f34ca7..acbc186 100644
--- a/components/zucchini/reloc_elf_unittest.cc
+++ b/components/zucchini/reloc_elf_unittest.cc
@@ -8,11 +8,13 @@
 
 #include <algorithm>
 #include <memory>
+#include <utility>
 #include <vector>
 
 #include "base/numerics/safe_conversions.h"
 #include "components/zucchini/address_translator.h"
 #include "components/zucchini/algorithm.h"
+#include "components/zucchini/disassembler_elf.h"
 #include "components/zucchini/image_utils.h"
 #include "components/zucchini/test_utils.h"
 #include "components/zucchini/type_elf.h"
@@ -45,79 +47,194 @@
   }};
 }
 
+// Helper to manipulate an image with one or more relocation tables.
+template <class ElfIntelTraits>
+class FakeImageWithReloc {
+ public:
+  struct RelocSpec {
+    offset_t start;
+    std::vector<uint8_t> data;
+  };
+
+  FakeImageWithReloc(size_t image_size,
+                     rva_t base_rva,
+                     const std::vector<RelocSpec>& reloc_specs)
+      : image_data_(image_size, 0xFF),
+        mutable_image_(&image_data_[0], image_data_.size()) {
+    translator_.Initialize({{0, image_size, base_rva, image_size}});
+    // Set up test image with reloc sections.
+    for (const RelocSpec& reloc_spec : reloc_specs) {
+      BufferRegion reloc_region = {reloc_spec.start, reloc_spec.data.size()};
+      std::copy(reloc_spec.data.begin(), reloc_spec.data.end(),
+                image_data_.begin() + reloc_region.lo());
+      section_dimensions_.emplace_back(
+          MakeSectionDimensions<typename ElfIntelTraits::Elf_Shdr>(
+              reloc_region, ElfIntelTraits::kVAWidth));
+      reloc_regions_.push_back(reloc_region);
+    }
+  }
+
+  std::vector<Reference> ExtractRelocReferences() {
+    const size_t image_size = image_data_.size();
+    ConstBufferView image = {image_data_.data(), image_size};
+
+    // Make RelocReaderElf.
+    auto reader = std::make_unique<RelocReaderElf>(
+        image, ElfIntelTraits::kBitness, section_dimensions_,
+        ElfIntelTraits::kRelType, 0, image_size, translator_);
+
+    // Read all references and check.
+    std::vector<Reference> refs;
+    for (base::Optional<Reference> ref = reader->GetNext(); ref.has_value();
+         ref = reader->GetNext()) {
+      refs.push_back(ref.value());
+    }
+    return refs;
+  }
+
+  std::unique_ptr<RelocWriterElf> MakeRelocWriter() {
+    return std::move(std::make_unique<RelocWriterElf>(
+        mutable_image_, ElfIntelTraits::kBitness, translator_));
+  }
+
+  std::vector<uint8_t> GetRawRelocData(int reloc_index) {
+    BufferRegion reloc_region = reloc_regions_[reloc_index];
+    return Sub(image_data_, reloc_region.lo(), reloc_region.hi());
+  }
+
+ private:
+  std::vector<uint8_t> image_data_;
+  MutableBufferView mutable_image_;
+  std::vector<BufferRegion> reloc_regions_;
+  std::vector<SectionDimensionsElf> section_dimensions_;
+  AddressTranslator translator_;
+};
+
 }  // namespace
 
 TEST(RelocElfTest, ReadWrite32) {
   // Set up mock image: Size = 0x3000, .reloc at 0x600. RVA is 0x40000 + offset.
+  constexpr size_t kImageSize = 0x3000;
   constexpr rva_t kBaseRva = 0x40000;
-  std::vector<uint8_t> image_data(0x3000, 0xFF);
+
+  constexpr offset_t kRelocStart0 = 0x600;
   // "C0 10 04 00 08 00 00 00" represents
   // (r_sym, r_type, r_offset) = (0x000000, 0x08, 0x000410C0).
-  // r_type = 0x08 = R_386_RELATIVE, and under this r_offset is an RVA
-  // 0x000410C0. Zucchini does not care about r_sym.
-  std::vector<uint8_t> reloc_data1 = ParseHexString(
+  // r_type = 0x08 = R_386_RELATIVE, and so |r_offset| is an RVA 0x000410C0.
+  // Zucchini does not care about |r_sym|.
+  std::vector<uint8_t> reloc_data0 = ParseHexString(
       "C0 10 04 00 08 00 00 00 "   // R_386_RELATIVE.
       "F8 10 04 00 08 AB CD EF "   // R_386_RELATIVE.
       "00 10 04 00 00 AB CD EF "   // R_386_NONE.
       "00 10 04 00 07 AB CD EF");  // R_386_JMP_SLOT.
-  BufferRegion reloc_region1 = {0x600, reloc_data1.size()};
-  std::copy(reloc_data1.begin(), reloc_data1.end(),
-            image_data.begin() + reloc_region1.lo());
 
-  std::vector<uint8_t> reloc_data2 = ParseHexString(
+  constexpr offset_t kRelocStart1 = 0x620;
+  std::vector<uint8_t> reloc_data1 = ParseHexString(
       "BC 20 04 00 08 00 00 00 "   // R_386_RELATIVE.
       "A0 20 04 00 08 AB CD EF");  // R_386_RELATIVE.
-  BufferRegion reloc_region2 = {0x620, reloc_data2.size()};
-  std::copy(reloc_data2.begin(), reloc_data2.end(),
-            image_data.begin() + reloc_region2.lo());
 
-  ConstBufferView image = {image_data.data(), image_data.size()};
-  offset_t image_size = base::checked_cast<offset_t>(image_data.size());
+  FakeImageWithReloc<Elf32IntelTraits> fake_image(
+      kImageSize, kBaseRva,
+      {{kRelocStart0, reloc_data0}, {kRelocStart1, reloc_data1}});
 
-  AddressTranslator translator;
-  translator.Initialize({{0, image_size, kBaseRva, image_size}});
-
-  std::vector<SectionDimensionsElf> section_dimensions{
-      MakeSectionDimensions<elf::Elf32_Shdr>(reloc_region1, 8),
-      MakeSectionDimensions<elf::Elf32_Shdr>(reloc_region2, 8)};
-
-  // Make RelocReaderElf.
-  auto reader = std::make_unique<RelocReaderElf>(
-      image, kBit32, section_dimensions, elf::R_386_RELATIVE, 0, image_size,
-      translator);
-
-  // Read all references and check.
-  std::vector<Reference> refs;
-  for (base::Optional<Reference> ref = reader->GetNext(); ref.has_value();
-       ref = reader->GetNext()) {
-    refs.push_back(ref.value());
-  }
   // Only R_386_RELATIVE references are extracted. Targets are translated from
   // address (e.g., 0x000420BC) to offset (e.g., 0x20BC).
   std::vector<Reference> exp_refs{
       {0x600, 0x10C0}, {0x608, 0x10F8}, {0x620, 0x20BC}, {0x628, 0x20A0}};
-  EXPECT_EQ(exp_refs, refs);
+  EXPECT_EQ(exp_refs, fake_image.ExtractRelocReferences());
 
   // Write reference, extract bytes and check.
-  MutableBufferView mutable_image(&image_data[0], image_data.size());
-  auto writer =
-      std::make_unique<RelocWriterElf>(mutable_image, kBit32, translator);
+  std::unique_ptr<RelocWriterElf> writer = fake_image.MakeRelocWriter();
 
   writer->PutNext({0x608, 0x1F83});
-  std::vector<uint8_t> exp_reloc_data1 = ParseHexString(
+  std::vector<uint8_t> exp_reloc_data0 = ParseHexString(
       "C0 10 04 00 08 00 00 00 "   // R_386_RELATIVE.
       "83 1F 04 00 08 AB CD EF "   // R_386_RELATIVE (address modified).
       "00 10 04 00 00 AB CD EF "   // R_386_NONE.
       "00 10 04 00 07 AB CD EF");  // R_386_JMP_SLOT.
-  EXPECT_EQ(exp_reloc_data1,
-            Sub(image_data, reloc_region1.lo(), reloc_region1.hi()));
+  EXPECT_EQ(exp_reloc_data0, fake_image.GetRawRelocData(0));
 
   writer->PutNext({0x628, 0x2950});
-  std::vector<uint8_t> exp_reloc_data2 = ParseHexString(
+  std::vector<uint8_t> exp_reloc_data1 = ParseHexString(
       "BC 20 04 00 08 00 00 00 "   // R_386_RELATIVE.
       "50 29 04 00 08 AB CD EF");  // R_386_RELATIVE (address modified).
-  EXPECT_EQ(exp_reloc_data2,
-            Sub(image_data, reloc_region2.lo(), reloc_region2.hi()));
+  EXPECT_EQ(exp_reloc_data1, fake_image.GetRawRelocData(1));
+}
+
+TEST(RelocElfTest, Limit32) {
+  constexpr size_t kImageSize = 0x3000;
+  constexpr offset_t kBaseRva = 0x40000;
+  constexpr offset_t kRelocStart = 0x600;
+  // All R_386_RELATIVE.
+  std::vector<uint8_t> reloc_data = ParseHexString(
+      // Strictly within file.
+      "00 00 04 00 08 00 00 00 "
+      "00 10 04 00 08 00 00 00 "
+      "F0 2F 04 00 08 00 00 00 "
+      "F8 2F 04 00 08 00 00 00 "
+      "FC 2F 04 00 08 00 00 00 "
+      // Straddles end of file.
+      "FD 2F 04 00 08 00 00 00 "
+      "FE 2F 04 00 08 00 00 00 "
+      "FF 2F 04 00 08 00 00 00 "
+      // Beyond end of file.
+      "00 30 04 00 08 00 00 00 "
+      "01 30 04 00 08 00 00 00 "
+      "FC FF FF 7F 08 00 00 00 "
+      "FE FF FF 7F 08 00 00 00 "
+      "00 00 00 80 08 00 00 00 "
+      "FC FF FF FF 08 00 00 00 "
+      "FF FF FF FF 08 00 00 00 "
+      // Another good reference.
+      "34 12 04 00 08 00 00 00");
+
+  FakeImageWithReloc<Elf32IntelTraits> fake_image(kImageSize, kBaseRva,
+                                                  {{kRelocStart, reloc_data}});
+
+  std::vector<Reference> exp_refs{{0x600, 0x0000}, {0x608, 0x1000},
+                                  {0x610, 0x2FF0}, {0x618, 0x2FF8},
+                                  {0x620, 0x2FFC}, {0x678, 0x1234}};
+  EXPECT_EQ(exp_refs, fake_image.ExtractRelocReferences());
+}
+
+TEST(RelocElfTest, Limit64) {
+  constexpr size_t kImageSize = 0x3000;
+  constexpr offset_t kBaseRva = 0x40000;
+
+  constexpr offset_t kRelocStart = 0x600;
+  // All R_X86_64_RELATIVE.
+  std::vector<uint8_t> reloc_data = ParseHexString(
+      // Strictly within file.
+      "00 00 04 00 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "00 10 04 00 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "F0 2F 04 00 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "F4 2F 04 00 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "F8 2F 04 00 00 00 00 00 08 00 00 00 00 00 00 00 "
+      // Straddles end of file.
+      "F9 2F 04 00 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "FC 2F 04 00 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "FF 2F 04 00 00 00 00 00 08 00 00 00 00 00 00 00 "
+      // Beyond end of file.
+      "00 30 04 00 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "01 30 04 00 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "FC FF FF 7F 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "FE FF FF 7F 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "00 00 00 80 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "FC FF FF FF 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "FF FF FF FF 00 00 00 00 08 00 00 00 00 00 00 00 "
+      "00 00 04 00 01 00 00 00 08 00 00 00 00 00 00 00 "
+      "FF FF FF FF FF FF FF FF 08 00 00 00 00 00 00 00 "
+      "F8 FF FF FF FF FF FF FF 08 00 00 00 00 00 00 00 "
+      // Another good reference.
+      "34 12 04 00 00 00 00 00 08 00 00 00 00 00 00 00");
+
+  FakeImageWithReloc<Elf64IntelTraits> fake_image(kImageSize, kBaseRva,
+                                                  {{kRelocStart, reloc_data}});
+
+  std::vector<Reference> exp_refs{{0x600, 0x0000}, {0x610, 0x1000},
+                                  {0x620, 0x2FF0}, {0x630, 0x2FF4},
+                                  {0x640, 0x2FF8}, {0x720, 0x1234}};
+  EXPECT_EQ(exp_refs, fake_image.ExtractRelocReferences());
 }
 
 }  // namespace zucchini
diff --git a/content/browser/back_forward_cache_browsertest.cc b/content/browser/back_forward_cache_browsertest.cc
index deb0d869..7df05eb 100644
--- a/content/browser/back_forward_cache_browsertest.cc
+++ b/content/browser/back_forward_cache_browsertest.cc
@@ -7,6 +7,7 @@
 
 #include "base/command_line.h"
 #include "base/hash/hash.h"
+#include "base/location.h"
 #include "base/metrics/metrics_hashes.h"
 #include "base/optional.h"
 #include "base/strings/string_piece_forward.h"
@@ -262,17 +263,20 @@
         let result = event_name;
         window.addEventListener(event_name, event => {
           if (event.persisted)
-            result +='.persisted';
-          window.testObservedEvents.push(result);
+            result += '.persisted';
+          window.testObservedEvents.push('window.' + result);
         });
         document.addEventListener(event_name,
-            () => window.testObservedEvents.push(result));
+            () => window.testObservedEvents.push('document.' + result));
       }
     )"));
   }
 
-  void MatchEventList(RenderFrameHostImpl* rfh, base::ListValue list) {
-    EXPECT_EQ(list, EvalJs(rfh, "window.testObservedEvents"));
+  void MatchEventList(RenderFrameHostImpl* rfh,
+                      base::ListValue list,
+                      base::Location location = base::Location::Current()) {
+    EXPECT_EQ(list, EvalJs(rfh, "window.testObservedEvents"))
+        << location.ToString();
   }
 
   // Creates a minimal HTTPS server, accessible through https_server().
@@ -2144,10 +2148,12 @@
   EXPECT_EQ(rfh_a, current_frame_host());
   // visibilitychange events are added twice per each because it is fired for
   // both window and document.
-  MatchEventList(rfh_a, ListValueOf("visibilitychange", "visibilitychange",
-                                    "pagehide.persisted", "freeze", "resume",
-                                    "pageshow.persisted", "visibilitychange",
-                                    "visibilitychange"));
+  MatchEventList(
+      rfh_a,
+      ListValueOf("document.visibilitychange", "window.visibilitychange",
+                  "window.pagehide.persisted", "document.freeze",
+                  "document.resume", "window.pageshow.persisted",
+                  "document.visibilitychange", "window.visibilitychange"));
 }
 
 // Tests the events are fired for subframes when going back from the cache.
@@ -2191,14 +2197,18 @@
   EXPECT_TRUE(rfh_c->is_in_back_forward_cache());
   // visibilitychange events are added twice per each because it is fired for
   // both window and document.
-  MatchEventList(rfh_a, ListValueOf("visibilitychange", "visibilitychange",
-                                    "pagehide.persisted", "freeze", "resume",
-                                    "pageshow.persisted", "visibilitychange",
-                                    "visibilitychange"));
-  MatchEventList(rfh_b, ListValueOf("visibilitychange", "visibilitychange",
-                                    "pagehide.persisted", "freeze", "resume",
-                                    "pageshow.persisted", "visibilitychange",
-                                    "visibilitychange"));
+  MatchEventList(
+      rfh_a,
+      ListValueOf("document.visibilitychange", "window.visibilitychange",
+                  "window.pagehide.persisted", "document.freeze",
+                  "document.resume", "window.pageshow.persisted",
+                  "document.visibilitychange", "window.visibilitychange"));
+  MatchEventList(
+      rfh_b,
+      ListValueOf("document.visibilitychange", "window.visibilitychange",
+                  "window.pagehide.persisted", "document.freeze",
+                  "document.resume", "window.pageshow.persisted",
+                  "document.visibilitychange", "window.visibilitychange"));
 }
 
 // Tests the events are fired when going back from the cache.
@@ -2237,10 +2247,12 @@
   EXPECT_EQ(rfh_a, current_frame_host());
   // visibilitychange events are added twice per each because it is fired for
   // both window and document.
-  MatchEventList(rfh_a, ListValueOf("visibilitychange", "visibilitychange",
-                                    "pagehide.persisted", "freeze", "resume",
-                                    "pageshow.persisted", "visibilitychange",
-                                    "visibilitychange"));
+  MatchEventList(
+      rfh_a,
+      ListValueOf("document.visibilitychange", "window.visibilitychange",
+                  "window.pagehide.persisted", "document.freeze",
+                  "document.resume", "window.pageshow.persisted",
+                  "document.visibilitychange", "window.visibilitychange"));
 }
 
 IN_PROC_BROWSER_TEST_F(BackForwardCacheBrowserTest,
diff --git a/content/browser/frame_host/ancestor_throttle.cc b/content/browser/frame_host/ancestor_throttle.cc
index 14a643c5..cf6f43e 100644
--- a/content/browser/frame_host/ancestor_throttle.cc
+++ b/content/browser/frame_host/ancestor_throttle.cc
@@ -193,54 +193,9 @@
     return NavigationThrottle::PROCEED;
   }
 
-  // Evaluate whether the navigation should be allowed or blocked based on
-  // existing content-security-policy on the response.
-  if (is_response_check && base::FeatureList::IsEnabled(
-                               network::features::kOutOfBlinkFrameAncestors)) {
-    if (!request->response()->content_security_policy.empty()) {
-      // TODO(arthursonzogni): Remove content::ContentSecurityPolicy in favor of
-      // network::mojom::ContentSecurityPolicy, this will avoid conversion
-      // between type here.
-      std::vector<ContentSecurityPolicy> policies;
-      policies.reserve(request->response()->content_security_policy.size());
-      for (auto& policy : request->response()->content_security_policy)
-        policies.push_back(ContentSecurityPolicy(policy.Clone()));
-      // TODO(lfg): If the initiating document is known and correspond to the
-      // navigating frame's current document, consider using:
-      // navigation_request().common_params().source_location here instead.
-      SourceLocation empty_source_location;
-
-      // CSP frame-ancestors are checked against the URL of every parent and are
-      // reported to the navigating frame.
-      FrameAncestorCSPContext csp_context(
-          NavigationRequest::From(navigation_handle())->GetRenderFrameHost(),
-          policies);
-      csp_context.SetSelf(url::Origin::Create(navigation_handle()->GetURL()));
-
-      // Check CSP frame-ancestors against every parent.
-      // We enforce frame-ancestors in the outer delegate for portals, but not
-      // for other uses of inner/outer WebContents (GuestViews).
-      RenderFrameHostImpl* parent =
-          ParentForAncestorThrottle(request->GetRenderFrameHost());
-      while (parent) {
-        if (!csp_context.IsAllowedByCsp(
-                network::mojom::CSPDirectiveName::FrameAncestors,
-                parent->GetLastCommittedOrigin().GetURL(),
-                navigation_handle()->WasServerRedirect(),
-                true /* is_response_check */, empty_source_location,
-                CSPContext::CheckCSPDisposition::CHECK_ALL_CSP,
-                navigation_handle()->IsFormSubmission())) {
-          return NavigationThrottle::BLOCK_RESPONSE;
-        }
-        parent = ParentForAncestorThrottle(parent);
-      }
-      return NavigationThrottle::PROCEED;
-    }
-  }
-
   std::string header_value;
-  HeaderDisposition disposition = ParseHeader(request->GetResponseHeaders(),
-                                              &header_value, is_response_check);
+  HeaderDisposition disposition =
+      ParseHeader(request->GetResponseHeaders(), &header_value);
 
   switch (disposition) {
     case HeaderDisposition::CONFLICT:
@@ -254,7 +209,7 @@
         ParseError(header_value, disposition);
       RecordXFrameOptionsUsage(XFrameOptionsHistogram::INVALID);
       // TODO(mkwst): Consider failing here.
-      return NavigationThrottle::PROCEED;
+      break;
 
     case HeaderDisposition::DENY:
       if (logging == LoggingDisposition::LOG_TO_CONSOLE)
@@ -288,21 +243,64 @@
         parent = parent->parent();
       }
       RecordXFrameOptionsUsage(XFrameOptionsHistogram::SAMEORIGIN);
-      return NavigationThrottle::PROCEED;
+      break;
     }
 
     case HeaderDisposition::NONE:
       RecordXFrameOptionsUsage(XFrameOptionsHistogram::NONE);
-      return NavigationThrottle::PROCEED;
+      break;
     case HeaderDisposition::BYPASS:
       RecordXFrameOptionsUsage(XFrameOptionsHistogram::BYPASS);
-      return NavigationThrottle::PROCEED;
+      break;
     case HeaderDisposition::ALLOWALL:
       RecordXFrameOptionsUsage(XFrameOptionsHistogram::ALLOWALL);
-      return NavigationThrottle::PROCEED;
+      break;
   }
-  NOTREACHED();
-  return NavigationThrottle::BLOCK_RESPONSE;
+
+  // Evaluate whether the navigation should be allowed or blocked based on
+  // existing content-security-policy on the response.
+  if (is_response_check && base::FeatureList::IsEnabled(
+                               network::features::kOutOfBlinkFrameAncestors)) {
+    // TODO(arthursonzogni): Remove content::ContentSecurityPolicy in favor
+    // of network::mojom::ContentSecurityPolicy, this will avoid conversion
+    // between type here.
+    std::vector<ContentSecurityPolicy> policies;
+    policies.reserve(request->response()->content_security_policy.size());
+    for (auto& policy : request->response()->content_security_policy)
+      policies.push_back(ContentSecurityPolicy(policy.Clone()));
+
+    // TODO(lfg): If the initiating document is known and correspond to the
+    // navigating frame's current document, consider using:
+    // navigation_request().common_params().source_location here instead.
+    SourceLocation empty_source_location;
+
+    // CSP frame-ancestors are checked against the URL of every parent and
+    // are reported to the navigating frame.
+    FrameAncestorCSPContext csp_context(
+        NavigationRequest::From(navigation_handle())->GetRenderFrameHost(),
+        policies);
+    csp_context.SetSelf(url::Origin::Create(navigation_handle()->GetURL()));
+
+    // Check CSP frame-ancestors against every parent.
+    // We enforce frame-ancestors in the outer delegate for portals, but not
+    // for other uses of inner/outer WebContents (GuestViews).
+    RenderFrameHostImpl* parent =
+        ParentForAncestorThrottle(request->GetRenderFrameHost());
+    while (parent) {
+      if (!csp_context.IsAllowedByCsp(
+              network::mojom::CSPDirectiveName::FrameAncestors,
+              parent->GetLastCommittedOrigin().GetURL(),
+              navigation_handle()->WasServerRedirect(),
+              true /* is_response_check */, empty_source_location,
+              CSPContext::CheckCSPDisposition::CHECK_ALL_CSP,
+              navigation_handle()->IsFormSubmission())) {
+        return NavigationThrottle::BLOCK_RESPONSE;
+      }
+      parent = ParentForAncestorThrottle(parent);
+    }
+  }
+
+  return NavigationThrottle::PROCEED;
 }
 
 const char* AncestorThrottle::GetNameForLogging() {
@@ -363,8 +361,7 @@
 
 AncestorThrottle::HeaderDisposition AncestorThrottle::ParseHeader(
     const net::HttpResponseHeaders* headers,
-    std::string* header_value,
-    bool is_response_check) {
+    std::string* header_value) {
   DCHECK(header_value);
   if (!headers)
     return HeaderDisposition::NONE;
@@ -407,9 +404,6 @@
   if (result != HeaderDisposition::NONE &&
       result != HeaderDisposition::ALLOWALL &&
       HeadersContainFrameAncestorsCSP(headers)) {
-    DCHECK(!is_response_check ||
-           !base::FeatureList::IsEnabled(
-               network::features::kOutOfBlinkFrameAncestors));
     // TODO(mkwst): 'frame-ancestors' is currently handled in Blink. We should
     // handle it here instead. Until then, don't block the request, and let
     // Blink handle it. https://crbug.com/555418
diff --git a/content/browser/frame_host/ancestor_throttle.h b/content/browser/frame_host/ancestor_throttle.h
index 3bdeeb10..2e1cbda 100644
--- a/content/browser/frame_host/ancestor_throttle.h
+++ b/content/browser/frame_host/ancestor_throttle.h
@@ -61,8 +61,7 @@
   // or INVALID, |header_value| will be populated with the value which caused
   // the parse error.
   HeaderDisposition ParseHeader(const net::HttpResponseHeaders* headers,
-                                std::string* header_value,
-                                bool is_response_check);
+                                std::string* header_value);
 
   DISALLOW_COPY_AND_ASSIGN(AncestorThrottle);
 };
diff --git a/content/browser/frame_host/ancestor_throttle_unittest.cc b/content/browser/frame_host/ancestor_throttle_unittest.cc
index b414014..605d8a4 100644
--- a/content/browser/frame_host/ancestor_throttle_unittest.cc
+++ b/content/browser/frame_host/ancestor_throttle_unittest.cc
@@ -89,7 +89,7 @@
         GetAncestorHeaders(test.header, nullptr);
     std::string header_value;
     EXPECT_EQ(test.expected,
-              throttle.ParseHeader(headers.get(), &header_value, true));
+              throttle.ParseHeader(headers.get(), &header_value));
     EXPECT_EQ(test.value, header_value);
   }
 }
@@ -124,7 +124,7 @@
         GetAncestorHeaders(test.header, nullptr);
     std::string header_value;
     EXPECT_EQ(test.expected,
-              throttle.ParseHeader(headers.get(), &header_value, true));
+              throttle.ParseHeader(headers.get(), &header_value));
     EXPECT_EQ(test.failure, header_value);
   }
 }
@@ -184,7 +184,7 @@
         GetAncestorHeaders("DENY", test.csp);
     std::string header_value;
     EXPECT_EQ(test.expected,
-              throttle.ParseHeader(headers.get(), &header_value, true));
+              throttle.ParseHeader(headers.get(), &header_value));
     EXPECT_EQ("DENY", header_value);
   }
 }
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index 34f9ab3..71e94c07 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -1859,6 +1859,8 @@
   SetLastCommittedUrl(GURL());
   web_bundle_handle_.reset();
 
+  has_committed_any_navigation_ = false;
+
   // Execute any pending AX tree snapshot callbacks with an empty response,
   // since we're never going to get a response from this renderer.
   for (auto& iter : ax_tree_snapshot_callbacks_)
diff --git a/content/browser/frame_host/render_frame_host_impl.h b/content/browser/frame_host/render_frame_host_impl.h
index ced6c5b0..189f3dbd 100644
--- a/content/browser/frame_host/render_frame_host_impl.h
+++ b/content/browser/frame_host/render_frame_host_impl.h
@@ -2272,10 +2272,10 @@
   // Previews status as the top-level frame.
   PreviewsState last_navigation_previews_state_;
 
-  // This boolean indicates whether this RenderFrameHostImpl has committed
-  // *any* navigation or not. Starts off false and is set to true for the
-  // lifetime of the object when the first CommitNavigation message is sent to
-  // the RenderFrame.
+  // This boolean indicates whether the RenderFrame has committed *any*
+  // navigation or not. Starts off false and is set to true for the lifetime of
+  // the RenderFrame when the first CommitNavigation message is sent to the
+  // RenderFrame. It is reset after a renderer process crash.
   bool has_committed_any_navigation_ = false;
 
   mojo::AssociatedReceiver<mojom::FrameHost> frame_host_associated_receiver_{
diff --git a/content/browser/loader/OWNERS b/content/browser/loader/OWNERS
index e14aea1c..88b68e20 100644
--- a/content/browser/loader/OWNERS
+++ b/content/browser/loader/OWNERS
@@ -2,5 +2,9 @@
 mmenke@chromium.org
 toyoshim@chromium.org
 
+per-file quic_transport_browsertest.cc=ricea@chromium.org
+per-file quic_transport_browsertest.cc=vasilvv@chromium.org
+per-file quic_transport_browsertest.cc=yhirano@chromium.org
+
 # TEAM: net-dev@chromium.org
 # COMPONENT: Internals>Network
diff --git a/content/browser/loader/quic_transport_browsertest.cc b/content/browser/loader/quic_transport_browsertest.cc
index 0125414..a60dd60 100644
--- a/content/browser/loader/quic_transport_browsertest.cc
+++ b/content/browser/loader/quic_transport_browsertest.cc
@@ -177,5 +177,35 @@
   ASSERT_TRUE(WaitForTitle(ASCIIToUTF16("PASS"), {ASCIIToUTF16("FAIL")}));
 }
 
+IN_PROC_BROWSER_TEST_F(QuicTransportTest, ClientIndicationFailure) {
+  ASSERT_TRUE(embedded_test_server()->Start());
+  ASSERT_TRUE(
+      NavigateToURL(shell(), embedded_test_server()->GetURL("/title2.html")));
+
+  ASSERT_TRUE(WaitForTitle(ASCIIToUTF16("Title Of Awesomeness")));
+
+  ASSERT_TRUE(ExecuteScript(
+      shell(), base::StringPrintf(R"JS(
+    async function run() {
+      // The client indication fails because there is no resource /X
+      // on the server.
+      const transport = new QuicTransport('quic-transport:localhost:%d/X');
+
+      try {
+        await transport.closed;
+      } catch (e) {
+        return;
+      }
+      throw Error('closed should be rejected');
+    }
+
+    run().then(() => { document.title = 'PASS'; },
+               (e) => { console.log(e); document.title = 'FAIL'; });
+)JS",
+                                  server_.server_address().port())));
+
+  ASSERT_TRUE(WaitForTitle(ASCIIToUTF16("PASS"), {ASCIIToUTF16("FAIL")}));
+}
+
 }  // namespace
 }  // namespace content
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index c2f5d76c..ee00405 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -41,6 +41,7 @@
 #include "content/public/browser/page_navigator.h"
 #include "content/public/browser/service_worker_external_request_result.h"
 #include "content/public/common/content_client.h"
+#include "content/public/common/content_features.h"
 #include "content/public/common/navigation_policy.h"
 #include "content/public/common/result_codes.h"
 #include "net/base/net_errors.h"
@@ -64,6 +65,13 @@
 const base::FeatureParam<int> kUpdateDelayParam{
     &blink::features::kServiceWorkerUpdateDelay, "update_delay_in_ms", 1000};
 
+// The default value is set to max since it's not used when the feature is
+// disabled. In that case, the service worker will be terminated by the idle
+// timeout.
+const base::FeatureParam<int> kTerminationDelayParam{
+    &features::kServiceWorkerTerminationOnNoControllee,
+    "termination_delay_in_ms", std::numeric_limits<int>::max()};
+
 const char kClaimClientsStateErrorMesage[] =
     "Only the active worker can claim clients.";
 
@@ -723,6 +731,15 @@
   // invalid controller status.
   CHECK(status_ == ACTIVATING || status_ == ACTIVATED);
 
+  if (base::FeatureList::IsEnabled(
+          features::kServiceWorkerTerminationOnNoControllee) &&
+      !stop_on_no_controllee_callback_.IsCancelled()) {
+    DCHECK(!HasControllee());
+
+    // Cancel to stop the worker since the worker is going to have a controllee.
+    stop_on_no_controllee_callback_.Cancel();
+  }
+
   controllee_map_[uuid] = container_host;
   embedded_worker_->UpdateForegroundPriority();
   ClearTick(&no_controllees_time_);
@@ -750,12 +767,33 @@
   controllee_map_.erase(client_uuid);
 
   embedded_worker_->UpdateForegroundPriority();
+
   // Notify observers asynchronously since this gets called during
   // ServiceWorkerProviderHost's destructor, and we don't want observers to do
   // work during that.
   base::ThreadTaskRunnerHandle::Get()->PostTask(
       FROM_HERE, base::BindOnce(&ServiceWorkerVersion::NotifyControlleeRemoved,
                                 weak_factory_.GetWeakPtr(), client_uuid));
+
+  if (base::FeatureList::IsEnabled(
+          features::kServiceWorkerTerminationOnNoControllee) &&
+      !HasControllee()) {
+    // Terminate the worker |delay_ms| ms after all controllees are gone.
+    auto delay_ms =
+        base::TimeDelta::FromMilliseconds(kTerminationDelayParam.Get());
+    stop_on_no_controllee_callback_.Reset(base::BindOnce(
+        [](base::WeakPtr<ServiceWorkerVersion> version) {
+          if (!version)
+            return;
+          // The worker should not have controllee because the callback is
+          // cancelled when a new controllee appears.
+          DCHECK(!version->HasControllee());
+          version->StopWorker(base::DoNothing());
+        },
+        weak_factory_.GetWeakPtr()));
+    base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
+        FROM_HERE, stop_on_no_controllee_callback_.callback(), delay_ms);
+  }
 }
 
 void ServiceWorkerVersion::MoveControlleeToBackForwardCacheMap(
diff --git a/content/browser/service_worker/service_worker_version.h b/content/browser/service_worker/service_worker_version.h
index 8cea3712..2d89c70e 100644
--- a/content/browser/service_worker/service_worker_version.h
+++ b/content/browser/service_worker/service_worker_version.h
@@ -16,6 +16,7 @@
 #include <vector>
 
 #include "base/callback.h"
+#include "base/cancelable_callback.h"
 #include "base/containers/id_map.h"
 #include "base/debug/stack_trace.h"
 #include "base/gtest_prod_util.h"
@@ -1051,6 +1052,12 @@
   // This is set when this service worker becomes redundant.
   base::debug::StackTrace redundant_state_callstack_;
 
+  // Callback to stop service worker small seconds after all controllees are
+  // gone. This callback can be canceled when the service worker starts to
+  // control another client and we know the worker needs to be used more.
+  // Used only when ServiceWorkerTerminationOnNoControllee is on.
+  base::CancelableOnceClosure stop_on_no_controllee_callback_;
+
   base::WeakPtrFactory<ServiceWorkerVersion> weak_factory_{this};
 
   DISALLOW_COPY_AND_ASSIGN(ServiceWorkerVersion);
diff --git a/content/browser/service_worker/service_worker_version_unittest.cc b/content/browser/service_worker/service_worker_version_unittest.cc
index c1ccf47..dc01f58d 100644
--- a/content/browser/service_worker/service_worker_version_unittest.cc
+++ b/content/browser/service_worker/service_worker_version_unittest.cc
@@ -29,6 +29,7 @@
 #include "content/browser/service_worker/service_worker_registration.h"
 #include "content/browser/service_worker/service_worker_test_utils.h"
 #include "content/common/service_worker/service_worker_utils.h"
+#include "content/public/common/content_features.h"
 #include "content/public/test/browser_task_environment.h"
 #include "content/public/test/mock_render_process_host.h"
 #include "content/public/test/test_service.mojom.h"
@@ -81,7 +82,8 @@
   };
 
   ServiceWorkerVersionTest()
-      : task_environment_(BrowserTaskEnvironment::IO_MAINLOOP) {}
+      : task_environment_(BrowserTaskEnvironment::IO_MAINLOOP,
+                          base::test::TaskEnvironment::TimeSource::MOCK_TIME) {}
 
   void SetUp() override {
     helper_ = GetHelper();
@@ -1440,5 +1442,145 @@
   EXPECT_EQ(test_message, service_worker->console_messages()[0]);
 }
 
+class ServiceWorkerVersionTerminationOnNoControlleeTest
+    : public ServiceWorkerVersionTest,
+      public testing::WithParamInterface<bool> {
+ public:
+  ServiceWorkerVersionTerminationOnNoControlleeTest() {
+    if (IsTerminationEnabled()) {
+      // The value should be the same with |kTerminationDelay|.
+      feature_list_.InitAndEnableFeatureWithParameters(
+          features::kServiceWorkerTerminationOnNoControllee,
+          {{"termination_delay_in_ms", "5000"}});
+    } else {
+      feature_list_.InitAndDisableFeature(
+          features::kServiceWorkerTerminationOnNoControllee);
+    }
+  }
+
+  ServiceWorkerContainerHost* CreateControllee() {
+    remote_endpoints_.emplace_back();
+    base::WeakPtr<ServiceWorkerContainerHost> container_host =
+        CreateContainerHostForWindow(
+            33 /* dummy render process id */, true /* is_parent_frame_secure */,
+            helper_->context()->AsWeakPtr(), &remote_endpoints_.back());
+    return container_host.get();
+  }
+
+  static bool IsTerminationEnabled() { return GetParam(); }
+
+ protected:
+  static const base::TimeDelta kTerminationDelay;
+
+ private:
+  base::test::ScopedFeatureList feature_list_;
+  std::vector<ServiceWorkerRemoteProviderEndpoint> remote_endpoints_;
+};
+
+// static
+// The value should be the same with the number set in the constructor.
+const base::TimeDelta
+    ServiceWorkerVersionTerminationOnNoControlleeTest::kTerminationDelay =
+        base::TimeDelta::FromMilliseconds(5000);
+
+INSTANTIATE_TEST_SUITE_P(All,
+                         ServiceWorkerVersionTerminationOnNoControlleeTest,
+                         testing::Bool());
+
+// Confirm if a service worker can be terminated when all controllees are gone
+// and a certain period of time which is set by a flag passes.
+TEST_P(ServiceWorkerVersionTerminationOnNoControlleeTest, NoControllee) {
+  version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
+  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
+            StartServiceWorker(version_.get()));
+  EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
+
+  // Service worker should be running after the time passes for more than the
+  // termination delay.
+  ServiceWorkerContainerHost* controllee = CreateControllee();
+  version_->AddControllee(controllee);
+  task_environment_.FastForwardBy(kTerminationDelay * 2);
+  EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
+
+  // Service worker will be terminated when |kTerminationDelay| passes after
+  // all controllees are gone.
+  version_->RemoveControllee(controllee->client_uuid());
+  task_environment_.FastForwardBy(kTerminationDelay);
+  if (IsTerminationEnabled()) {
+    EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
+  } else {
+    EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
+  }
+}
+
+// Confirm if a service worker won't be terminated until all controllees are
+// gone and a certain period of time which is set by a flag passes.
+TEST_P(ServiceWorkerVersionTerminationOnNoControlleeTest,
+       NotTerminatedUntilAllControlleeAreGone) {
+  version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
+  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
+            StartServiceWorker(version_.get()));
+  EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
+
+  ServiceWorkerContainerHost* controllee1 = CreateControllee();
+  ServiceWorkerContainerHost* controllee2 = CreateControllee();
+  version_->AddControllee(controllee1);
+  version_->AddControllee(controllee2);
+
+  // Service worker won't be terminated until all controllees are gone.
+  version_->RemoveControllee(controllee1->client_uuid());
+  task_environment_.FastForwardBy(kTerminationDelay);
+  EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
+
+  // Service worker will be terminated when |kTerminationDelay| passes after
+  // all controllees are gone.
+  version_->RemoveControllee(controllee2->client_uuid());
+  task_environment_.FastForwardBy(kTerminationDelay);
+  if (IsTerminationEnabled()) {
+    EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
+  } else {
+    EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
+  }
+}
+
+// Confirm the timeout is extended when a new controllee is added to the
+// ServiceWorkerVersion before it's terminated.
+TEST_P(ServiceWorkerVersionTerminationOnNoControlleeTest,
+       AddControlleeBeforeTermination) {
+  version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
+  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
+            StartServiceWorker(version_.get()));
+  EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
+
+  {
+    // Service worker won't be terminated until |kTerminationDelay| passes
+    // after all controllees are gone.
+    ServiceWorkerContainerHost* controllee = CreateControllee();
+    version_->AddControllee(controllee);
+    version_->RemoveControllee(controllee->client_uuid());
+    task_environment_.FastForwardBy(kTerminationDelay / 2);
+    EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
+  }
+
+  {
+    // Service worker won't be terminated if a new controllee is added before
+    // |kTerminationDelay| passes since the last controllee is removed.
+    ServiceWorkerContainerHost* controllee = CreateControllee();
+    version_->AddControllee(controllee);
+    task_environment_.FastForwardBy(kTerminationDelay);
+    EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
+
+    // Service worker will be terminated when |kTerminationDelay| passes
+    // after all controllees are gone.
+    version_->RemoveControllee(controllee->client_uuid());
+    task_environment_.FastForwardBy(kTerminationDelay);
+    if (IsTerminationEnabled()) {
+      EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
+    } else {
+      EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
+    }
+  }
+}
+
 }  // namespace service_worker_version_unittest
 }  // namespace content
diff --git a/content/browser/tracing/background_tracing_manager_browsertest.cc b/content/browser/tracing/background_tracing_manager_browsertest.cc
index b76c766..c1b5ee0 100644
--- a/content/browser/tracing/background_tracing_manager_browsertest.cc
+++ b/content/browser/tracing/background_tracing_manager_browsertest.cc
@@ -38,7 +38,7 @@
 #include "services/tracing/public/cpp/tracing_features.h"
 #include "third_party/zlib/zlib.h"
 
-#if defined(OS_ANDROID)
+#if defined(OS_POSIX)
 // Used by PerfettoSystemBackgroundScenario, nogncheck is required because this
 // is only included and used on Android.
 #include "services/tracing/perfetto/system_test_utils.h"  // nogncheck
@@ -65,7 +65,7 @@
 }
 
 void SetSystemProducerSocketAndChecksAsync(const std::string& producer_socket) {
-  // We need to let the AndroidSystemProducer know the MockSystemService socket
+  // We need to let the PosixSystemProducer know the MockSystemService socket
   // address and that if we're running on Android devices older then Pie to
   // still connect.
   tracing::PerfettoTracedProcess::GetTaskRunner()
@@ -75,12 +75,12 @@
           base::BindOnce(
               [](const std::string& producer_socket) {
                 // The only other type of system producer is
-                // AndroidSystemProducer so this assert ensures that the
+                // PosixSystemProducer so this assert ensures that the
                 // static_cast below is safe.
                 ASSERT_FALSE(tracing::PerfettoTracedProcess::Get()
                                  ->SystemProducerForTesting()
                                  ->IsDummySystemProducerForTesting());
-                auto* producer = static_cast<tracing::AndroidSystemProducer*>(
+                auto* producer = static_cast<tracing::PosixSystemProducer*>(
                     tracing::PerfettoTracedProcess::Get()
                         ->SystemProducerForTesting());
                 producer->SetNewSocketForTesting(producer_socket.c_str());
@@ -104,7 +104,7 @@
 }
 }  // namespace
 }  // namespace content
-#endif  // defined(OS_ANDROID)
+#endif  // defined(OS_POSIX)
 
 using base::trace_event::TraceLog;
 
@@ -1698,7 +1698,7 @@
   EXPECT_TRUE(checker.stats().has_interned_source_locations);
 }
 
-#if defined(OS_ANDROID)
+#if defined(OS_POSIX)
 IN_PROC_BROWSER_TEST_F(BackgroundTracingManagerBrowserTest,
                        PerfettoSystemBackgroundScenarioDefaultName) {
   // This test will ensure that a BackgroundTracing scenario set to SYSTEM mode
@@ -1832,6 +1832,6 @@
   // received we won't see any packets and |received_packets()| will be 0.
   EXPECT_LT(0u, system_consumer->received_packets());
 }
-#endif  // defined(OS_ANDROID)
+#endif  // defined(OS_POSIX)
 
 }  // namespace content
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
index 5ce51cb..96db010f 100644
--- a/content/public/common/content_features.cc
+++ b/content/public/common/content_features.cc
@@ -487,6 +487,12 @@
 const base::Feature kServiceWorkerPrefersUnusedProcess{
     "ServiceWorkerPrefersUnusedProcess", base::FEATURE_DISABLED_BY_DEFAULT};
 
+// Use this feature to experiment terminating a service worker when it doesn't
+// control any clients: https://crbug.com/1043845.
+const base::Feature kServiceWorkerTerminationOnNoControllee{
+    "ServiceWorkerTerminationOnNoControllee",
+    base::FEATURE_DISABLED_BY_DEFAULT};
+
 // http://tc39.github.io/ecmascript_sharedmem/shmem.html
 const base::Feature kSharedArrayBuffer {
   "SharedArrayBuffer",
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h
index d57de74..91b9c2b 100644
--- a/content/public/common/content_features.h
+++ b/content/public/common/content_features.h
@@ -108,6 +108,8 @@
 CONTENT_EXPORT extern const base::Feature kServiceWorkerOnUI;
 CONTENT_EXPORT extern const base::Feature kServiceWorkerPaymentApps;
 CONTENT_EXPORT extern const base::Feature kServiceWorkerPrefersUnusedProcess;
+CONTENT_EXPORT extern const base::Feature
+    kServiceWorkerTerminationOnNoControllee;
 CONTENT_EXPORT extern const base::Feature kSharedArrayBuffer;
 CONTENT_EXPORT extern const base::Feature
     kSignedExchangePrefetchCacheForNavigations;
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
index 2f7f458..ea2432d6 100644
--- a/content/test/BUILD.gn
+++ b/content/test/BUILD.gn
@@ -1316,7 +1316,6 @@
       "//content/shell:content_shell_lib",
       "//content/shell/android:content_shell_assets",
       "//content/shell/android:content_shell_jni_headers",
-      "//services/tracing:test_utils",
       "//testing/android/native_test:native_test_support",
       "//ui/android:android",
       "//ui/touch_selection:touch_selection",
@@ -1340,6 +1339,9 @@
     ]
     deps += [ "//content/browser/speech/proto" ]
   }
+  if (is_posix) {
+    deps += [ "//services/tracing:test_utils" ]
+  }
 
   # HID support is not available without udev.
   is_linux_without_udev = is_linux && !use_udev
@@ -2063,6 +2065,7 @@
 
   if (is_posix) {
     sources += [ "../browser/posix_file_descriptor_info_impl_unittest.cc" ]
+    deps += [ "//services/tracing:test_utils" ]
   }
 
   if (enable_plugins) {
diff --git a/docs/gdbinit.md b/docs/gdbinit.md
index d52735e..707cf1da 100644
--- a/docs/gdbinit.md
+++ b/docs/gdbinit.md
@@ -11,3 +11,8 @@
 ```
 source /path/to/chromium/src/tools/gdb/gdbinit
 ```
+
+*** promo
+Notice that in components builds, the debug files will be loaded lazily. Because of this, the program needs to run at least once before breakpoints can be set. Alternatively, gdb will ask for confirmation as follows:
+> Make breakpoint pending on future shared library load? (y or [n])
+***
diff --git a/extensions/BUILD.gn b/extensions/BUILD.gn
index d7fb5f91..6ceee52d 100644
--- a/extensions/BUILD.gn
+++ b/extensions/BUILD.gn
@@ -290,7 +290,7 @@
     "//components/app_modal",
     "//components/autofill/content/browser:risk_proto",
     "//components/autofill/content/renderer:test_support",
-    "//components/captive_portal:test_support",
+    "//components/captive_portal/core:test_support",
     "//components/dom_distiller/content/browser",
     "//components/dom_distiller/core:test_support",
     "//components/guest_view/browser:test_support",
diff --git a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
index 481a45d..a4e3846 100644
--- a/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
+++ b/extensions/browser/api/web_request/web_request_proxying_url_loader_factory.cc
@@ -389,6 +389,14 @@
 
 void WebRequestProxyingURLLoaderFactory::InProgressRequest::OnLoaderCreated(
     mojo::PendingReceiver<network::mojom::TrustedHeaderClient> receiver) {
+  // When CORS is involved there may be multiple network::URLLoader associated
+  // with this InProgressRequest, because CorsURLLoader may create a new
+  // network::URLLoader for the same request id in redirect handling - see
+  // CorsURLLoader::FollowRedirect. In such a case the old network::URLLoader
+  // is going to be detached fairly soon, so we don't need to take care of it.
+  // We need this explicit reset to avoid a DCHECK failure in mojo::Receiver.
+  header_client_receiver_.reset();
+
   header_client_receiver_.Bind(std::move(receiver));
   if (for_cors_preflight_) {
     // In this case we don't have |target_loader_| and
diff --git a/extensions/browser/extension_prefs.cc b/extensions/browser/extension_prefs.cc
index 9328ba2e..8c8da8d1 100644
--- a/extensions/browser/extension_prefs.cc
+++ b/extensions/browser/extension_prefs.cc
@@ -1312,6 +1312,12 @@
   }
 }
 
+void ExtensionPrefs::SetInstallLocation(const std::string& extension_id,
+                                        Manifest::Location location) {
+  UpdateExtensionPref(extension_id, kPrefLocation,
+                      std::make_unique<base::Value>(location));
+}
+
 std::unique_ptr<ExtensionInfo> ExtensionPrefs::GetInstalledInfoHelper(
     const std::string& extension_id,
     const base::DictionaryValue* extension,
diff --git a/extensions/browser/extension_prefs.h b/extensions/browser/extension_prefs.h
index 82e792f..27fe690 100644
--- a/extensions/browser/extension_prefs.h
+++ b/extensions/browser/extension_prefs.h
@@ -310,6 +310,11 @@
   // Returns base extensions install directory.
   const base::FilePath& install_directory() const { return install_directory_; }
 
+  // For updating the prefs when the install location is changed for the
+  // extension.
+  void SetInstallLocation(const std::string& extension_id,
+                          Manifest::Location location);
+
   // Returns whether the extension with |id| has its blacklist bit set.
   //
   // WARNING: this only checks the extension's entry in prefs, so by definition
diff --git a/google_apis/google_api_keys.cc b/google_apis/google_api_keys.cc
index ff46314..c271426 100644
--- a/google_apis/google_api_keys.cc
+++ b/google_apis/google_api_keys.cc
@@ -83,6 +83,11 @@
 #define GOOGLE_API_KEY_REMOTING DUMMY_API_TOKEN
 #endif
 
+// API key for SharingService.
+#if !defined(GOOGLE_API_KEY_SHARING)
+#define GOOGLE_API_KEY_SHARING DUMMY_API_TOKEN
+#endif
+
 // These are used as shortcuts for developers and users providing
 // OAuth credentials via preprocessor defines or environment
 // variables.  If set, they will be used to replace any of the client
@@ -126,6 +131,10 @@
         STRINGIZE_NO_EXPANSION(GOOGLE_API_KEY_REMOTING), nullptr, std::string(),
         environment.get(), command_line);
 
+    api_key_sharing_ = CalculateKeyValue(
+        GOOGLE_API_KEY_SHARING, STRINGIZE_NO_EXPANSION(GOOGLE_API_KEY_SHARING),
+        nullptr, std::string(), environment.get(), command_line);
+
     metrics_key_ = CalculateKeyValue(
         GOOGLE_METRICS_SIGNING_KEY,
         STRINGIZE_NO_EXPANSION(GOOGLE_METRICS_SIGNING_KEY), nullptr,
@@ -195,6 +204,7 @@
 #endif
   std::string api_key_non_stable() const { return api_key_non_stable_; }
   std::string api_key_remoting() const { return api_key_remoting_; }
+  std::string api_key_sharing() const { return api_key_sharing_; }
 
   std::string metrics_key() const { return metrics_key_; }
 
@@ -293,6 +303,7 @@
   std::string api_key_;
   std::string api_key_non_stable_;
   std::string api_key_remoting_;
+  std::string api_key_sharing_;
   std::string metrics_key_;
   std::string client_ids_[CLIENT_NUM_ITEMS];
   std::string client_secrets_[CLIENT_NUM_ITEMS];
@@ -317,6 +328,10 @@
   return g_api_key_cache.Get().api_key_remoting();
 }
 
+std::string GetSharingAPIKey() {
+  return g_api_key_cache.Get().api_key_sharing();
+}
+
 #if defined(OS_IOS)
 void SetAPIKey(const std::string& api_key) {
   g_api_key_cache.Get().set_api_key(api_key);
diff --git a/google_apis/google_api_keys.h b/google_apis/google_api_keys.h
index 255b753c..590e3c1e 100644
--- a/google_apis/google_api_keys.h
+++ b/google_apis/google_api_keys.h
@@ -76,6 +76,9 @@
 // Retrieves the Chrome Remote Desktop API key.
 std::string GetRemotingAPIKey();
 
+// Retrieves the Sharing API Key.
+std::string GetSharingAPIKey();
+
 #if defined(OS_IOS)
 // Sets the API key. This should be called as early as possible before this
 // API key is even accessed.
diff --git a/gpu/command_buffer/service/shared_image_factory.cc b/gpu/command_buffer/service/shared_image_factory.cc
index 2bc3954..ea077b2a 100644
--- a/gpu/command_buffer/service/shared_image_factory.cc
+++ b/gpu/command_buffer/service/shared_image_factory.cc
@@ -368,9 +368,9 @@
   constexpr auto kWrappedSkImageUsage = SHARED_IMAGE_USAGE_RASTER |
                                         SHARED_IMAGE_USAGE_OOP_RASTERIZATION |
                                         SHARED_IMAGE_USAGE_DISPLAY;
-  bool using_wrapped_sk_image = wrapped_sk_image_factory_ &&
-                                (usage == kWrappedSkImageUsage) &&
-                                !using_interop_factory;
+  bool using_wrapped_sk_image =
+      wrapped_sk_image_factory_ && (usage == kWrappedSkImageUsage) &&
+      !using_interop_factory && !share_between_threads;
   using_interop_factory |= vulkan_usage && !using_wrapped_sk_image;
 
   if (gmb_type != gfx::EMPTY_BUFFER) {
diff --git a/infra/config/buckets/goma.star b/infra/config/buckets/goma.star
index 97fec40..0de8195 100644
--- a/infra/config/buckets/goma.star
+++ b/infra/config/buckets/goma.star
@@ -455,6 +455,7 @@
 goma_builder(
     name = 'Chromium Android ARM 32-bit Goma RBE ToT',
     goma_backend = goma.backend.RBE_TOT,
+    goma_enable_ats = False,
 )
 
 goma_builder(
@@ -510,6 +511,7 @@
 goma_builder(
     name = 'Chromium Linux Goma RBE ToT',
     goma_backend = goma.backend.RBE_TOT,
+    goma_enable_ats = False,
 )
 
 goma_builder(
diff --git a/infra/config/generated/cr-buildbucket.cfg b/infra/config/generated/cr-buildbucket.cfg
index 980690e..d7e61129 100644
--- a/infra/config/generated/cr-buildbucket.cfg
+++ b/infra/config/generated/cr-buildbucket.cfg
@@ -9454,7 +9454,7 @@
         name: "chromium"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
         cipd_version: "refs/heads/master"
-        properties_j: "$build/goma:{\"enable_ats\":true,\"rpc_extra_params\":\"?tot\",\"server_host\":\"staging-goma.chromium.org\"}"
+        properties_j: "$build/goma:{\"enable_ats\":false,\"rpc_extra_params\":\"?tot\",\"server_host\":\"staging-goma.chromium.org\"}"
         properties_j: "$kitchen:{\"devshell\":true,\"git_auth\":true}"
         properties_j: "mastername:\"chromium.goma\""
       >
@@ -9664,7 +9664,7 @@
         name: "chromium"
         cipd_package: "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build"
         cipd_version: "refs/heads/master"
-        properties_j: "$build/goma:{\"enable_ats\":true,\"rpc_extra_params\":\"?tot\",\"server_host\":\"staging-goma.chromium.org\"}"
+        properties_j: "$build/goma:{\"enable_ats\":false,\"rpc_extra_params\":\"?tot\",\"server_host\":\"staging-goma.chromium.org\"}"
         properties_j: "$kitchen:{\"devshell\":true,\"git_auth\":true}"
         properties_j: "mastername:\"chromium.goma\""
       >
diff --git a/infra/config/lib/builders.star b/infra/config/lib/builders.star
index 1e640f2..b781557 100644
--- a/infra/config/lib/builders.star
+++ b/infra/config/lib/builders.star
@@ -156,12 +156,14 @@
     goma_properties['debug'] = True
 
   goma_enable_ats = _default('goma_enable_ats', goma_enable_ats)
-  if goma_enable_ats:  # TODO(crbug.com/1040754): Remove this flag.
-    goma_properties['enable_ats'] = True
-  elif (goma_backend in (goma.backend.RBE_TOT, goma.backend.RBE_STAGING,
-                         goma.backend.RBE_PROD) and
-        (os and os.category in (os_category.LINUX, os_category.WINDOWS))):
-    goma_properties['enable_ats'] = True
+  # TODO(crbug.com/1040754): Remove this flag.
+  if (goma_backend in (goma.backend.RBE_TOT, goma.backend.RBE_STAGING,
+                       goma.backend.RBE_PROD) and
+      os and os.category in (os_category.LINUX, os_category.WINDOWS)):
+    if goma_enable_ats != None:
+      goma_properties['enable_ats'] = goma_enable_ats
+    else:
+      goma_properties['enable_ats'] = True
 
   goma_jobs = _default('goma_jobs', goma_jobs)
   if goma_jobs != None:
@@ -199,7 +201,7 @@
     cpu = lucicfg.var(),
     goma_backend = lucicfg.var(),
     goma_debug = lucicfg.var(default = False),
-    goma_enable_ats = lucicfg.var(default = False),
+    goma_enable_ats = lucicfg.var(),
     goma_jobs = lucicfg.var(),
     mastername = lucicfg.var(),
     os = lucicfg.var(),
diff --git a/ios/chrome/browser/device_sharing/device_sharing_manager.h b/ios/chrome/browser/device_sharing/device_sharing_manager.h
index cbef7bf..eb621c9 100644
--- a/ios/chrome/browser/device_sharing/device_sharing_manager.h
+++ b/ios/chrome/browser/device_sharing/device_sharing_manager.h
@@ -7,13 +7,11 @@
 
 #import <Foundation/Foundation.h>
 
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
+
 class GURL;
 @class HandoffManager;
 
-namespace ios {
-class ChromeBrowserState;
-}
-
 // This manager maintains all state related to sharing the active URL to other
 // devices. It has the role of a dispatcher that shares the active URL to
 // various internal sharing services (e.g. handoff).
diff --git a/ios/chrome/browser/ssl/BUILD.gn b/ios/chrome/browser/ssl/BUILD.gn
index 66f276a..29ec842 100644
--- a/ios/chrome/browser/ssl/BUILD.gn
+++ b/ios/chrome/browser/ssl/BUILD.gn
@@ -25,7 +25,7 @@
     "//base",
     "//base:i18n",
     "//components/autofill/ios/form_util",
-    "//components/captive_portal",
+    "//components/captive_portal/core",
     "//components/security_interstitials/core",
     "//components/security_state/core",
     "//components/security_state/ios",
diff --git a/ios/chrome/browser/ssl/captive_portal_detector_tab_helper.mm b/ios/chrome/browser/ssl/captive_portal_detector_tab_helper.mm
index 336eb72..ac970f4 100644
--- a/ios/chrome/browser/ssl/captive_portal_detector_tab_helper.mm
+++ b/ios/chrome/browser/ssl/captive_portal_detector_tab_helper.mm
@@ -7,7 +7,7 @@
 #include <memory>
 
 #include "base/memory/ptr_util.h"
-#include "components/captive_portal/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
 #import "ios/chrome/browser/ssl/captive_portal_detector_tab_helper_delegate.h"
 #include "ios/web/public/browser_state.h"
 #import "ios/web/public/web_state.h"
diff --git a/ios/chrome/browser/ssl/captive_portal_metrics_tab_helper.h b/ios/chrome/browser/ssl/captive_portal_metrics_tab_helper.h
index ee4caea..625dd94c 100644
--- a/ios/chrome/browser/ssl/captive_portal_metrics_tab_helper.h
+++ b/ios/chrome/browser/ssl/captive_portal_metrics_tab_helper.h
@@ -7,7 +7,7 @@
 
 #include "base/macros.h"
 #include "base/timer/timer.h"
-#include "components/captive_portal/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
 #include "ios/chrome/browser/ssl/captive_portal_metrics.h"
 #include "ios/web/public/web_state_observer.h"
 #import "ios/web/public/web_state_user_data.h"
diff --git a/ios/chrome/browser/ssl/captive_portal_metrics_tab_helper.mm b/ios/chrome/browser/ssl/captive_portal_metrics_tab_helper.mm
index 819c302..917c053 100644
--- a/ios/chrome/browser/ssl/captive_portal_metrics_tab_helper.mm
+++ b/ios/chrome/browser/ssl/captive_portal_metrics_tab_helper.mm
@@ -6,7 +6,7 @@
 
 #include "base/bind.h"
 #include "base/metrics/histogram_macros.h"
-#include "components/captive_portal/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
 #import "ios/chrome/browser/ssl/captive_portal_detector_tab_helper.h"
 #import "ios/web/public/navigation/navigation_context.h"
 #import "ios/web/public/web_state.h"
diff --git a/ios/chrome/browser/ssl/ios_captive_portal_blocking_page.mm b/ios/chrome/browser/ssl/ios_captive_portal_blocking_page.mm
index 62fa6d8..a690565 100644
--- a/ios/chrome/browser/ssl/ios_captive_portal_blocking_page.mm
+++ b/ios/chrome/browser/ssl/ios_captive_portal_blocking_page.mm
@@ -8,8 +8,8 @@
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/values.h"
-#include "components/captive_portal/captive_portal_detector.h"
-#include "components/captive_portal/captive_portal_metrics.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_metrics.h"
 #include "components/security_interstitials/core/controller_client.h"
 #include "components/strings/grit/components_strings.h"
 #include "components/url_formatter/url_formatter.h"
diff --git a/ios/chrome/browser/ssl/ios_ssl_error_handler.h b/ios/chrome/browser/ssl/ios_ssl_error_handler.h
index 14c66b6..d5d8711a 100644
--- a/ios/chrome/browser/ssl/ios_ssl_error_handler.h
+++ b/ios/chrome/browser/ssl/ios_ssl_error_handler.h
@@ -8,8 +8,8 @@
 #include "base/callback_forward.h"
 #include "base/memory/weak_ptr.h"
 #include "base/timer/timer.h"
-#include "components/captive_portal/captive_portal_detector.h"
-#include "components/captive_portal/captive_portal_types.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_types.h"
 #include "ios/chrome/browser/interstitials/ios_security_interstitial_page.h"
 #import "ios/web/public/web_state_user_data.h"
 #include "url/gurl.h"
diff --git a/ios/chrome/browser/ssl/ios_ssl_error_handler.mm b/ios/chrome/browser/ssl/ios_ssl_error_handler.mm
index cf50d3d..6cae8d0 100644
--- a/ios/chrome/browser/ssl/ios_ssl_error_handler.mm
+++ b/ios/chrome/browser/ssl/ios_ssl_error_handler.mm
@@ -9,7 +9,7 @@
 #include "base/feature_list.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/sys_string_conversions.h"
-#include "components/captive_portal/captive_portal_detector.h"
+#include "components/captive_portal/core/captive_portal_detector.h"
 #include "components/security_interstitials/core/ssl_error_options_mask.h"
 #include "components/security_interstitials/core/ssl_error_ui.h"
 #include "ios/chrome/browser/ssl/captive_portal_detector_tab_helper.h"
diff --git a/ios/chrome/browser/translate/translate_accept_languages_factory.h b/ios/chrome/browser/translate/translate_accept_languages_factory.h
index 4657eca..385c451 100644
--- a/ios/chrome/browser/translate/translate_accept_languages_factory.h
+++ b/ios/chrome/browser/translate/translate_accept_languages_factory.h
@@ -10,15 +10,12 @@
 #include "base/macros.h"
 #include "base/no_destructor.h"
 #include "components/keyed_service/ios/browser_state_keyed_service_factory.h"
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 
 namespace translate {
 class TranslateAcceptLanguages;
 }
 
-namespace ios {
-class ChromeBrowserState;
-}
-
 // TranslateAcceptLanguagesFactory is a way to associate a
 // TranslateAcceptLanguages instance to a BrowserState.
 class TranslateAcceptLanguagesFactory : public BrowserStateKeyedServiceFactory {
diff --git a/ios/chrome/browser/translate/translate_ranker_factory.h b/ios/chrome/browser/translate/translate_ranker_factory.h
index b04ddd8..bd0727a 100644
--- a/ios/chrome/browser/translate/translate_ranker_factory.h
+++ b/ios/chrome/browser/translate/translate_ranker_factory.h
@@ -10,10 +10,7 @@
 #include "base/macros.h"
 #include "base/no_destructor.h"
 #include "components/keyed_service/ios/browser_state_keyed_service_factory.h"
-
-namespace ios {
-class ChromeBrowserState;
-}
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 
 namespace translate {
 
diff --git a/ios/chrome/common/colors/resources/blue_color.colorset/Contents.json b/ios/chrome/common/colors/resources/blue_color.colorset/Contents.json
index ea5e033b..b094de8 100644
--- a/ios/chrome/common/colors/resources/blue_color.colorset/Contents.json
+++ b/ios/chrome/common/colors/resources/blue_color.colorset/Contents.json
@@ -29,7 +29,7 @@
         "components" : {
           "red" : "0x8A",
           "alpha" : "1.000",
-          "blue" : "0xF9",
+          "blue" : "0xF8",
           "green" : "0xB4"
         }
       }
diff --git a/ios/chrome/common/colors/resources/blue_dark_color.colorset/Contents.json b/ios/chrome/common/colors/resources/blue_dark_color.colorset/Contents.json
index 2f40cc2..a1400f73 100644
--- a/ios/chrome/common/colors/resources/blue_dark_color.colorset/Contents.json
+++ b/ios/chrome/common/colors/resources/blue_dark_color.colorset/Contents.json
@@ -11,7 +11,7 @@
         "components" : {
           "red" : "0x8A",
           "alpha" : "1.000",
-          "blue" : "0xF9",
+          "blue" : "0xF8",
           "green" : "0xB4"
         }
       }
diff --git a/ios/public/provider/chrome/browser/signin/BUILD.gn b/ios/public/provider/chrome/browser/signin/BUILD.gn
index 0ad570be..535e6b7 100644
--- a/ios/public/provider/chrome/browser/signin/BUILD.gn
+++ b/ios/public/provider/chrome/browser/signin/BUILD.gn
@@ -20,6 +20,7 @@
   deps = [
     "//base",
     "//google_apis",
+    "//ios/chrome/browser/browser_state:forward",
   ]
 }
 
diff --git a/ios/public/provider/chrome/browser/signin/chrome_identity_service.h b/ios/public/provider/chrome/browser/signin/chrome_identity_service.h
index cbee725..e0b4300 100644
--- a/ios/public/provider/chrome/browser/signin/chrome_identity_service.h
+++ b/ios/public/provider/chrome/browser/signin/chrome_identity_service.h
@@ -11,6 +11,7 @@
 
 #include "base/macros.h"
 #include "base/observer_list.h"
+#include "ios/chrome/browser/browser_state/chrome_browser_state_forward.h"
 
 @class ChromeIdentity;
 @protocol ChromeIdentityBrowserOpener;
@@ -29,7 +30,6 @@
 
 namespace ios {
 
-class ChromeBrowserState;
 class ChromeIdentityService;
 
 // Callback passed to method |GetAccessTokenForScopes()| that returns the
diff --git a/media/capture/BUILD.gn b/media/capture/BUILD.gn
index 74e46bb..0f253c9 100644
--- a/media/capture/BUILD.gn
+++ b/media/capture/BUILD.gn
@@ -406,6 +406,7 @@
     configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
   }
 
+  # TODO(https://crbug.com/1043007): use is_linux.
   if (is_chromeos) {
     deps += [ "//media/gpu/test:local_gpu_memory_buffer_manager" ]
   }
diff --git a/media/gpu/test/local_gpu_memory_buffer_manager.cc b/media/gpu/test/local_gpu_memory_buffer_manager.cc
index fe95de1..e9ad443e 100644
--- a/media/gpu/test/local_gpu_memory_buffer_manager.cc
+++ b/media/gpu/test/local_gpu_memory_buffer_manager.cc
@@ -28,6 +28,7 @@
 const int32_t kDrmNumNodes = 64;
 const int32_t kMinNodeNumber = 128;
 
+// TODO(https://crbug.com/1043007): use ui/gfx/linux/gbm_device.h instead.
 gbm_device* CreateGbmDevice() {
   int fd;
   int32_t min_node = kMinNodeNumber;
diff --git a/media/gpu/vaapi/BUILD.gn b/media/gpu/vaapi/BUILD.gn
index d9ba99b2..fe8cee3 100644
--- a/media/gpu/vaapi/BUILD.gn
+++ b/media/gpu/vaapi/BUILD.gn
@@ -201,39 +201,42 @@
   ]
 }
 
-source_set("jpeg_decoder_unit_test") {
-  testonly = true
-  sources = [ "vaapi_jpeg_decoder_unittest.cc" ]
-  deps = [
-    ":vaapi",
-    ":vaapi_image_decoder_test_common",
-    ":vaapi_test_utils",
-    "//base",
-    "//media/gpu/test:local_gpu_memory_buffer_manager",
-    "//media/parsers",
-    "//testing/gtest",
-    "//third_party/libyuv:libyuv",
-    "//ui/gfx:memory_buffer",
-    "//ui/gfx/codec",
-    "//ui/gfx/geometry",
-  ]
-}
+# TODO(https://crbug.com/1043007): remove is_chromeos.
+if (is_chromeos) {
+  source_set("jpeg_decoder_unit_test") {
+    testonly = true
+    sources = [ "vaapi_jpeg_decoder_unittest.cc" ]
+    deps = [
+      ":vaapi",
+      ":vaapi_image_decoder_test_common",
+      ":vaapi_test_utils",
+      "//base",
+      "//media/gpu/test:local_gpu_memory_buffer_manager",
+      "//media/parsers",
+      "//testing/gtest",
+      "//third_party/libyuv:libyuv",
+      "//ui/gfx:memory_buffer",
+      "//ui/gfx/codec",
+      "//ui/gfx/geometry",
+    ]
+  }
 
-source_set("webp_decoder_unit_test") {
-  testonly = true
-  sources = [ "vaapi_webp_decoder_unittest.cc" ]
-  deps = [
-    ":vaapi",
-    ":vaapi_image_decoder_test_common",
-    ":vaapi_test_utils",
-    "//base",
-    "//media/gpu/test:local_gpu_memory_buffer_manager",
-    "//media/parsers",
-    "//testing/gtest",
-    "//third_party/libwebp",
-    "//ui/gfx:memory_buffer",
-    "//ui/gfx/geometry",
-  ]
+  source_set("webp_decoder_unit_test") {
+    testonly = true
+    sources = [ "vaapi_webp_decoder_unittest.cc" ]
+    deps = [
+      ":vaapi",
+      ":vaapi_image_decoder_test_common",
+      ":vaapi_test_utils",
+      "//base",
+      "//media/gpu/test:local_gpu_memory_buffer_manager",
+      "//media/parsers",
+      "//testing/gtest",
+      "//third_party/libwebp",
+      "//ui/gfx:memory_buffer",
+      "//ui/gfx/geometry",
+    ]
+  }
 }
 
 source_set("vaapi_utils_unittest") {
@@ -251,12 +254,18 @@
 test("vaapi_unittest") {
   sources = [ "vaapi_unittest.cc" ]
   deps = [
-    ":jpeg_decoder_unit_test",
     ":vaapi",
     ":vaapi_utils_unittest",
-    ":webp_decoder_unit_test",
     "//base",
     "//media/gpu/test:helpers",
     "//testing/gtest",
   ]
+
+  # TODO(https://crbug.com/1043007): remove is_chromeos.
+  if (is_chromeos) {
+    deps += [
+      ":jpeg_decoder_unit_test",
+      ":webp_decoder_unit_test",
+    ]
+  }
 }
diff --git a/net/BUILD.gn b/net/BUILD.gn
index 9f5134b..d47d101 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -754,6 +754,7 @@
       "http2/platform/impl/http2_bug_tracker_impl.h",
       "http2/platform/impl/http2_containers_impl.h",
       "http2/platform/impl/http2_estimate_memory_usage_impl.h",
+      "http2/platform/impl/http2_export_impl.h",
       "http2/platform/impl/http2_flag_utils_impl.h",
       "http2/platform/impl/http2_flags_impl.cc",
       "http2/platform/impl/http2_flags_impl.h",
@@ -1169,6 +1170,7 @@
       "third_party/quiche/src/http2/platform/api/http2_bug_tracker.h",
       "third_party/quiche/src/http2/platform/api/http2_containers.h",
       "third_party/quiche/src/http2/platform/api/http2_estimate_memory_usage.h",
+      "third_party/quiche/src/http2/platform/api/http2_export.h",
       "third_party/quiche/src/http2/platform/api/http2_flag_utils.h",
       "third_party/quiche/src/http2/platform/api/http2_flags.h",
       "third_party/quiche/src/http2/platform/api/http2_logging.h",
diff --git a/net/http2/platform/impl/http2_export_impl.h b/net/http2/platform/impl/http2_export_impl.h
new file mode 100644
index 0000000..f2321c6
--- /dev/null
+++ b/net/http2/platform/impl/http2_export_impl.h
@@ -0,0 +1,13 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_HTTP2_PLATFORM_IMPL_HTTP2_EXPORT_IMPL_H_
+#define NET_HTTP2_PLATFORM_IMPL_HTTP2_EXPORT_IMPL_H_
+
+#include "net/base/net_export.h"
+
+#define HTTP2_EXPORT NET_EXPORT
+#define HTTP2_EXPORT_PRIVATE NET_EXPORT_PRIVATE
+
+#endif  // NET_HTTP2_PLATFORM_IMPL_HTTP2_EXPORT_IMPL_H_
diff --git a/net/http2/platform/impl/http2_flags_impl.h b/net/http2/platform/impl/http2_flags_impl.h
index 2185e89..e9dbdc0 100644
--- a/net/http2/platform/impl/http2_flags_impl.h
+++ b/net/http2/platform/impl/http2_flags_impl.h
@@ -5,9 +5,9 @@
 #ifndef NET_HTTP2_PLATFORM_IMPL_HTTP2_FLAGS_IMPL_H_
 #define NET_HTTP2_PLATFORM_IMPL_HTTP2_FLAGS_IMPL_H_
 
-#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
+#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
 
-QUICHE_EXPORT_PRIVATE extern bool FLAGS_http2_varint_decode_64_bits;
+HTTP2_EXPORT_PRIVATE extern bool FLAGS_http2_varint_decode_64_bits;
 
 namespace http2 {
 
diff --git a/net/http2/platform/impl/http2_string_utils_impl.h b/net/http2/platform/impl/http2_string_utils_impl.h
index 483559f..5fb4c43 100644
--- a/net/http2/platform/impl/http2_string_utils_impl.h
+++ b/net/http2/platform/impl/http2_string_utils_impl.h
@@ -14,6 +14,7 @@
 #include "net/base/escape.h"
 #include "net/base/hex_utils.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
+#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
 
 namespace http2 {
 
diff --git a/net/quic/quic_flags_list.h b/net/quic/quic_flags_list.h
index b0a740d..6f3ad62 100644
--- a/net/quic/quic_flags_list.h
+++ b/net/quic/quic_flags_list.h
@@ -406,7 +406,3 @@
 QUIC_FLAG(bool,
           FLAGS_quic_reloadable_flag_quic_ack_delay_alarm_granularity,
           false)
-
-// If true, enable the 1ACK connection option to only send 1 immediate ACK after
-// reordering.
-QUIC_FLAG(bool, FLAGS_quic_reloadable_flag_quic_one_immediate_ack, false)
diff --git a/net/test/embedded_test_server/default_handlers.cc b/net/test/embedded_test_server/default_handlers.cc
index bab85b4a..b4c6dfd 100644
--- a/net/test/embedded_test_server/default_handlers.cc
+++ b/net/test/embedded_test_server/default_handlers.cc
@@ -552,9 +552,19 @@
   std::string dest = UnescapeBinaryURLComponent(request_url.query_piece());
   RequestQuery query = ParseQuery(request_url);
 
+  if (request.method == METHOD_OPTIONS) {
+    auto http_response = std::make_unique<BasicHttpResponse>();
+    http_response->set_code(HTTP_OK);
+    http_response->AddCustomHeader("Access-Control-Allow-Origin", "*");
+    http_response->AddCustomHeader("Access-Control-Allow-Methods", "*");
+    http_response->AddCustomHeader("Access-Control-Allow-Headers", "*");
+    return http_response;
+  }
+
   auto http_response = std::make_unique<BasicHttpResponse>();
   http_response->set_code(redirect_code);
   http_response->AddCustomHeader("Location", dest);
+  http_response->AddCustomHeader("Access-Control-Allow-Origin", "*");
   http_response->set_content_type("text/html");
   http_response->set_content(base::StringPrintf(
       "<html><head></head><body>Redirecting to %s</body></html>",
diff --git a/ppapi/proxy/file_io_resource.cc b/ppapi/proxy/file_io_resource.cc
index c1fbff1..d2f4d2bc 100644
--- a/ppapi/proxy/file_io_resource.cc
+++ b/ppapi/proxy/file_io_resource.cc
@@ -210,10 +210,9 @@
   // completion task to write the result.
   scoped_refptr<QueryOp> query_op(new QueryOp(file_holder_));
   base::PostTaskAndReplyWithResult(
-      PpapiGlobals::Get()->GetFileTaskRunner(),
-      FROM_HERE,
-      Bind(&FileIOResource::QueryOp::DoWork, query_op),
-      RunWhileLocked(Bind(&TrackedCallback::Run, callback)));
+      PpapiGlobals::Get()->GetFileTaskRunner(), FROM_HERE,
+      base::BindOnce(&FileIOResource::QueryOp::DoWork, query_op),
+      RunWhileLocked(base::BindOnce(&TrackedCallback::Run, callback)));
   callback->set_completion_task(
       Bind(&FileIOResource::OnQueryComplete, this, query_op, info));
 
@@ -478,10 +477,9 @@
   scoped_refptr<ReadOp> read_op(
       new ReadOp(file_holder_, offset, bytes_to_read));
   base::PostTaskAndReplyWithResult(
-      PpapiGlobals::Get()->GetFileTaskRunner(),
-      FROM_HERE,
-      Bind(&FileIOResource::ReadOp::DoWork, read_op),
-      RunWhileLocked(Bind(&TrackedCallback::Run, callback)));
+      PpapiGlobals::Get()->GetFileTaskRunner(), FROM_HERE,
+      base::BindOnce(&FileIOResource::ReadOp::DoWork, read_op),
+      RunWhileLocked(base::BindOnce(&TrackedCallback::Run, callback)));
   callback->set_completion_task(
       Bind(&FileIOResource::OnReadComplete, this, read_op, array_output));
 
@@ -520,10 +518,9 @@
   scoped_refptr<WriteOp> write_op(new WriteOp(
       file_holder_, offset, std::move(copy), bytes_to_write, append));
   base::PostTaskAndReplyWithResult(
-      PpapiGlobals::Get()->GetFileTaskRunner(),
-      FROM_HERE,
-      Bind(&FileIOResource::WriteOp::DoWork, write_op),
-      RunWhileLocked(Bind(&TrackedCallback::Run, callback)));
+      PpapiGlobals::Get()->GetFileTaskRunner(), FROM_HERE,
+      base::BindOnce(&FileIOResource::WriteOp::DoWork, write_op),
+      RunWhileLocked(base::BindOnce(&TrackedCallback::Run, callback)));
   callback->set_completion_task(Bind(&FileIOResource::OnWriteComplete, this));
 
   return PP_OK_COMPLETIONPENDING;
@@ -612,10 +609,9 @@
     scoped_refptr<WriteOp> write_op(new WriteOp(
         file_holder_, offset, std::move(buffer), bytes_to_write, append));
     base::PostTaskAndReplyWithResult(
-        PpapiGlobals::Get()->GetFileTaskRunner(),
-        FROM_HERE,
-        Bind(&FileIOResource::WriteOp::DoWork, write_op),
-        RunWhileLocked(Bind(&TrackedCallback::Run, callback)));
+        PpapiGlobals::Get()->GetFileTaskRunner(), FROM_HERE,
+        base::BindOnce(&FileIOResource::WriteOp::DoWork, write_op),
+        RunWhileLocked(base::BindOnce(&TrackedCallback::Run, callback)));
     callback->set_completion_task(Bind(&FileIOResource::OnWriteComplete, this));
   }
 }
diff --git a/ppapi/proxy/message_handler.cc b/ppapi/proxy/message_handler.cc
index 4fe0462..eba0305 100644
--- a/ppapi/proxy/message_handler.cc
+++ b/ppapi/proxy/message_handler.cc
@@ -109,9 +109,9 @@
 
 void MessageHandler::HandleMessage(ScopedPPVar var) {
   message_loop_->task_runner()->PostTask(
-      FROM_HERE, RunWhileLocked(base::Bind(&HandleMessageWrapper,
-                                           handler_if_->HandleMessage,
-                                           instance_, user_data_, var)));
+      FROM_HERE, RunWhileLocked(base::BindOnce(&HandleMessageWrapper,
+                                               handler_if_->HandleMessage,
+                                               instance_, user_data_, var)));
 }
 
 void MessageHandler::HandleBlockingMessage(
@@ -119,7 +119,7 @@
     std::unique_ptr<IPC::Message> reply_msg) {
   message_loop_->task_runner()->PostTask(
       FROM_HERE,
-      RunWhileLocked(base::Bind(
+      RunWhileLocked(base::BindOnce(
           &HandleBlockingMessageWrapper, handler_if_->HandleBlockingMessage,
           instance_, user_data_, var, base::Passed(std::move(reply_msg)))));
 }
diff --git a/ppapi/proxy/ppb_core_proxy.cc b/ppapi/proxy/ppb_core_proxy.cc
index b3651ab..bd13402 100644
--- a/ppapi/proxy/ppb_core_proxy.cc
+++ b/ppapi/proxy/ppb_core_proxy.cc
@@ -74,7 +74,7 @@
 
   PpapiGlobals::Get()->GetMainThreadMessageLoop()->PostDelayedTask(
       FROM_HERE,
-      RunWhileLocked(base::Bind(&CallbackWrapper, callback, result)),
+      RunWhileLocked(base::BindOnce(&CallbackWrapper, callback, result)),
       base::TimeDelta::FromMilliseconds(delay_in_ms));
 }
 
diff --git a/ppapi/proxy/ppb_image_data_proxy.cc b/ppapi/proxy/ppb_image_data_proxy.cc
index af6ff939..e74b776 100644
--- a/ppapi/proxy/ppb_image_data_proxy.cc
+++ b/ppapi/proxy/ppb_image_data_proxy.cc
@@ -284,9 +284,9 @@
   // Schedule a timer to invalidate this entry.
   PpapiGlobals::Get()->GetMainThreadMessageLoop()->PostDelayedTask(
       FROM_HERE,
-      RunWhileLocked(base::Bind(&ImageDataCache::OnTimer,
-                                weak_factory_.GetWeakPtr(),
-                                image_data->pp_instance())),
+      RunWhileLocked(base::BindOnce(&ImageDataCache::OnTimer,
+                                    weak_factory_.GetWeakPtr(),
+                                    image_data->pp_instance())),
       base::TimeDelta::FromSeconds(kMaxAgeSeconds));
 }
 
diff --git a/ppapi/proxy/ppb_instance_proxy.cc b/ppapi/proxy/ppb_instance_proxy.cc
index 2999cc3..f47f551f 100644
--- a/ppapi/proxy/ppb_instance_proxy.cc
+++ b/ppapi/proxy/ppb_instance_proxy.cc
@@ -636,7 +636,7 @@
   if (!data->is_request_surrounding_text_pending) {
     PpapiGlobals::Get()->GetMainThreadMessageLoop()->PostTask(
         FROM_HERE,
-        RunWhileLocked(base::Bind(&RequestSurroundingText, instance)));
+        RunWhileLocked(base::BindOnce(&RequestSurroundingText, instance)));
     data->is_request_surrounding_text_pending = true;
   }
 }
diff --git a/ppapi/proxy/ppb_message_loop_proxy.cc b/ppapi/proxy/ppb_message_loop_proxy.cc
index d8f8631..263c056 100644
--- a/ppapi/proxy/ppb_message_loop_proxy.cc
+++ b/ppapi/proxy/ppb_message_loop_proxy.cc
@@ -95,9 +95,8 @@
   task_runner_ = base::ThreadTaskRunnerHandle::Get();
 
   // Post all pending work to the task executor.
-  for (size_t i = 0; i < pending_tasks_.size(); i++) {
-    const TaskInfo& info = pending_tasks_[i];
-    PostClosure(info.from_here, info.closure, info.delay_ms);
+  for (auto& info : pending_tasks_) {
+    PostClosure(info.from_here, std::move(info.closure), info.delay_ms);
   }
   pending_tasks_.clear();
 
@@ -116,7 +115,7 @@
 
   nested_invocations_++;
   CallWhileUnlocked(
-      base::Bind(&base::RunLoop::Run, base::Unretained(run_loop_)));
+      base::BindOnce(&base::RunLoop::Run, base::Unretained(run_loop_)));
   nested_invocations_--;
 
   run_loop_ = previous_run_loop;
@@ -188,17 +187,17 @@
 }
 
 void MessageLoopResource::PostClosure(const base::Location& from_here,
-                                      const base::Closure& closure,
+                                      base::OnceClosure closure,
                                       int64_t delay_ms) {
   if (task_runner_.get()) {
-    task_runner_->PostDelayedTask(from_here, closure,
+    task_runner_->PostDelayedTask(from_here, std::move(closure),
                                   base::TimeDelta::FromMilliseconds(delay_ms));
   } else {
     TaskInfo info;
     info.from_here = FROM_HERE;
-    info.closure = closure;
+    info.closure = std::move(closure);
     info.delay_ms = delay_ms;
-    pending_tasks_.push_back(info);
+    pending_tasks_.push_back(std::move(info));
   }
 }
 
diff --git a/ppapi/proxy/ppb_message_loop_proxy.h b/ppapi/proxy/ppb_message_loop_proxy.h
index eb90e06..1956669 100644
--- a/ppapi/proxy/ppb_message_loop_proxy.h
+++ b/ppapi/proxy/ppb_message_loop_proxy.h
@@ -59,7 +59,7 @@
  private:
   struct TaskInfo {
     base::Location from_here;
-    base::Closure closure;
+    base::OnceClosure closure;
     int64_t delay_ms;
   };
 
@@ -74,7 +74,7 @@
   //       This only makes sense for user code and completely thread-safe
   //       proxy operations (e.g., MessageLoop::QuitClosure).
   void PostClosure(const base::Location& from_here,
-                   const base::Closure& closure,
+                   base::OnceClosure closure,
                    int64_t delay_ms) override;
   base::SingleThreadTaskRunner* GetTaskRunner() override;
   bool CurrentlyHandlingBlockingMessage() override;
diff --git a/ppapi/proxy/ppb_var_deprecated_proxy.cc b/ppapi/proxy/ppb_var_deprecated_proxy.cc
index 925c8de7..b5f98a0 100644
--- a/ppapi/proxy/ppb_var_deprecated_proxy.cc
+++ b/ppapi/proxy/ppb_var_deprecated_proxy.cc
@@ -380,9 +380,8 @@
   // then remove this.
   PpapiGlobals::Get()->GetMainThreadMessageLoop()->PostNonNestableTask(
       FROM_HERE,
-      RunWhileLocked(base::Bind(&PPB_Var_Deprecated_Proxy::DoReleaseObject,
-                                task_factory_.GetWeakPtr(),
-                                object_id)));
+      RunWhileLocked(base::BindOnce(&PPB_Var_Deprecated_Proxy::DoReleaseObject,
+                                    task_factory_.GetWeakPtr(), object_id)));
 }
 
 void PPB_Var_Deprecated_Proxy::OnMsgHasProperty(
diff --git a/ppapi/proxy/tracked_callback_unittest.cc b/ppapi/proxy/tracked_callback_unittest.cc
index ce63a4c..8c20d66 100644
--- a/ppapi/proxy/tracked_callback_unittest.cc
+++ b/ppapi/proxy/tracked_callback_unittest.cc
@@ -245,7 +245,7 @@
     // |thread_checker_| will bind to the background thread.
     thread_checker_.DetachFromThread();
     loop_resource->task_runner()->PostTask(
-        FROM_HERE, RunWhileLocked(base::Bind(
+        FROM_HERE, RunWhileLocked(base::BindOnce(
                        &CallbackMockResource::CreateCallbacks, this)));
   }
 
diff --git a/ppapi/proxy/udp_socket_filter.cc b/ppapi/proxy/udp_socket_filter.cc
index 9022bd2..3611c32 100644
--- a/ppapi/proxy/udp_socket_filter.cc
+++ b/ppapi/proxy/udp_socket_filter.cc
@@ -190,8 +190,7 @@
         base::Unretained(recvfrom_addr_resource_)));
     last_recvfrom_addr_ = addr;
     PpapiGlobals::Get()->GetMainThreadMessageLoop()->PostTask(
-        FROM_HERE,
-        RunWhileLocked(slot_available_callback_));
+        FROM_HERE, RunWhileLocked(base::BindOnce(slot_available_callback_)));
   }
 
   read_buffer_ = NULL;
diff --git a/ppapi/shared_impl/ppb_audio_shared.cc b/ppapi/shared_impl/ppb_audio_shared.cc
index 241d6ecd2..9dfe887 100644
--- a/ppapi/shared_impl/ppb_audio_shared.cc
+++ b/ppapi/shared_impl/ppb_audio_shared.cc
@@ -181,8 +181,9 @@
   } else {
     if (audio_thread_.get()) {
       auto local_audio_thread(std::move(audio_thread_));
-      CallWhileUnlocked(base::Bind(&base::DelegateSimpleThread::Join,
-                                   base::Unretained(local_audio_thread.get())));
+      CallWhileUnlocked(
+          base::BindOnce(&base::DelegateSimpleThread::Join,
+                         base::Unretained(local_audio_thread.get())));
     }
   }
 }
diff --git a/ppapi/shared_impl/ppb_message_loop_shared.h b/ppapi/shared_impl/ppb_message_loop_shared.h
index 5e048f2..925806d 100644
--- a/ppapi/shared_impl/ppb_message_loop_shared.h
+++ b/ppapi/shared_impl/ppb_message_loop_shared.h
@@ -44,7 +44,7 @@
   //       This only makes sense for user code and completely thread-safe
   //       proxy operations (e.g., MessageLoop::QuitClosure).
   virtual void PostClosure(const base::Location& from_here,
-                           const base::Closure& closure,
+                           base::OnceClosure closure,
                            int64_t delay_ms) = 0;
 
   virtual base::SingleThreadTaskRunner* GetTaskRunner() = 0;
diff --git a/ppapi/shared_impl/proxy_lock.cc b/ppapi/shared_impl/proxy_lock.cc
index cd302f9..045f1c9 100644
--- a/ppapi/shared_impl/proxy_lock.cc
+++ b/ppapi/shared_impl/proxy_lock.cc
@@ -89,9 +89,9 @@
   g_disable_locking_for_thread.Get().Set(false);
 }
 
-void CallWhileUnlocked(const base::Closure& closure) {
+void CallWhileUnlocked(base::OnceClosure closure) {
   ProxyAutoUnlock lock;
-  closure.Run();
+  std::move(closure).Run();
 }
 
 }  // namespace ppapi
diff --git a/ppapi/shared_impl/proxy_lock.h b/ppapi/shared_impl/proxy_lock.h
index 66a5688..75e7afbd 100644
--- a/ppapi/shared_impl/proxy_lock.h
+++ b/ppapi/shared_impl/proxy_lock.h
@@ -164,7 +164,7 @@
   ProxyAutoUnlock unlock;
   return function(p1, p2, p3, p4, p5);
 }
-void PPAPI_SHARED_EXPORT CallWhileUnlocked(const base::Closure& closure);
+void PPAPI_SHARED_EXPORT CallWhileUnlocked(base::OnceClosure closure);
 
 namespace internal {
 
@@ -178,9 +178,9 @@
 template <>
 class RunWhileLockedHelper<void()> {
  public:
-  typedef base::Callback<void()> CallbackType;
-  explicit RunWhileLockedHelper(const CallbackType& callback)
-      : callback_(new CallbackType(callback)) {
+  typedef base::OnceCallback<void()> CallbackType;
+  explicit RunWhileLockedHelper(CallbackType callback)
+      : callback_(std::move(callback)) {
     // CallWhileLocked and destruction might happen on a different thread from
     // creation.
     thread_checker_.DetachFromThread();
@@ -201,8 +201,8 @@
       // Use a scope and local Callback to ensure that the callback is cleared
       // before the lock is released, even in the unlikely event that Run()
       // throws an exception.
-      std::unique_ptr<CallbackType> temp_callback(std::move(ptr->callback_));
-      temp_callback->Run();
+      CallbackType temp_callback = std::move(ptr->callback_);
+      std::move(temp_callback).Run();
     }
   }
 
@@ -234,13 +234,13 @@
       base::ScopedAllowCrossThreadRefCountAccess
           allow_cross_thread_ref_count_access;
 
-      callback_.reset();
+      callback_.Reset();
     }
   }
 
  private:
   DISALLOW_COPY_AND_ASSIGN(RunWhileLockedHelper);
-  std::unique_ptr<CallbackType> callback_;
+  CallbackType callback_;
 
   // Used to ensure that the Callback is run and deleted on the same thread.
   base::ThreadChecker thread_checker_;
@@ -249,9 +249,9 @@
 template <typename P1>
 class RunWhileLockedHelper<void(P1)> {
  public:
-  typedef base::Callback<void(P1)> CallbackType;
-  explicit RunWhileLockedHelper(const CallbackType& callback)
-      : callback_(new CallbackType(callback)) {
+  typedef base::OnceCallback<void(P1)> CallbackType;
+  explicit RunWhileLockedHelper(CallbackType callback)
+      : callback_(std::move(callback)) {
     thread_checker_.DetachFromThread();
   }
   static void CallWhileLocked(std::unique_ptr<RunWhileLockedHelper> ptr,
@@ -263,8 +263,8 @@
     base::ScopedAllowCrossThreadRefCountAccess
         allow_cross_thread_ref_count_access;
     {
-      std::unique_ptr<CallbackType> temp_callback(std::move(ptr->callback_));
-      temp_callback->Run(p1);
+      CallbackType temp_callback = std::move(ptr->callback_);
+      std::move(temp_callback).Run(p1);
     }
   }
   ~RunWhileLockedHelper() {
@@ -275,22 +275,22 @@
       // |lock| above protects the access to Resource instances.
       base::ScopedAllowCrossThreadRefCountAccess
           allow_cross_thread_ref_count_access;
-      callback_.reset();
+      callback_.Reset();
     }
   }
 
  private:
   DISALLOW_COPY_AND_ASSIGN(RunWhileLockedHelper);
-  std::unique_ptr<CallbackType> callback_;
+  CallbackType callback_;
   base::ThreadChecker thread_checker_;
 };
 
 template <typename P1, typename P2>
 class RunWhileLockedHelper<void(P1, P2)> {
  public:
-  typedef base::Callback<void(P1, P2)> CallbackType;
-  explicit RunWhileLockedHelper(const CallbackType& callback)
-      : callback_(new CallbackType(callback)) {
+  typedef base::OnceCallback<void(P1, P2)> CallbackType;
+  explicit RunWhileLockedHelper(CallbackType callback)
+      : callback_(std::move(callback)) {
     thread_checker_.DetachFromThread();
   }
   static void CallWhileLocked(std::unique_ptr<RunWhileLockedHelper> ptr,
@@ -303,8 +303,8 @@
     base::ScopedAllowCrossThreadRefCountAccess
         allow_cross_thread_ref_count_access;
     {
-      std::unique_ptr<CallbackType> temp_callback(std::move(ptr->callback_));
-      temp_callback->Run(p1, p2);
+      CallbackType temp_callback = std::move(ptr->callback_);
+      std::move(temp_callback).Run(p1, p2);
     }
   }
   ~RunWhileLockedHelper() {
@@ -315,22 +315,22 @@
       // |lock| above protects the access to Resource instances.
       base::ScopedAllowCrossThreadRefCountAccess
           allow_cross_thread_ref_count_access;
-      callback_.reset();
+      callback_.Reset();
     }
   }
 
  private:
   DISALLOW_COPY_AND_ASSIGN(RunWhileLockedHelper);
-  std::unique_ptr<CallbackType> callback_;
+  CallbackType callback_;
   base::ThreadChecker thread_checker_;
 };
 
 template <typename P1, typename P2, typename P3>
 class RunWhileLockedHelper<void(P1, P2, P3)> {
  public:
-  typedef base::Callback<void(P1, P2, P3)> CallbackType;
-  explicit RunWhileLockedHelper(const CallbackType& callback)
-      : callback_(new CallbackType(callback)) {
+  typedef base::OnceCallback<void(P1, P2, P3)> CallbackType;
+  explicit RunWhileLockedHelper(CallbackType callback)
+      : callback_(std::move(callback)) {
     thread_checker_.DetachFromThread();
   }
   static void CallWhileLocked(std::unique_ptr<RunWhileLockedHelper> ptr,
@@ -344,8 +344,8 @@
     base::ScopedAllowCrossThreadRefCountAccess
         allow_cross_thread_ref_count_access;
     {
-      std::unique_ptr<CallbackType> temp_callback(std::move(ptr->callback_));
-      temp_callback->Run(p1, p2, p3);
+      CallbackType temp_callback = std::move(ptr->callback_);
+      std::move(temp_callback).Run(p1, p2, p3);
     }
   }
   ~RunWhileLockedHelper() {
@@ -356,13 +356,13 @@
       // |lock| above protects the access to Resource instances.
       base::ScopedAllowCrossThreadRefCountAccess
           allow_cross_thread_ref_count_access;
-      callback_.reset();
+      callback_.Reset();
     }
   }
 
  private:
   DISALLOW_COPY_AND_ASSIGN(RunWhileLockedHelper);
-  std::unique_ptr<CallbackType> callback_;
+  CallbackType callback_;
   base::ThreadChecker thread_checker_;
 };
 
@@ -381,9 +381,10 @@
 // want to ensure that the ProxyLock is acquired for the duration of the task
 // that the Callback runs.
 // EXAMPLE USAGE:
-//   GetMainThreadMessageLoop()->PostDelayedTask(
+// GetMainThreadMessageLoop()->PostDelayedTask(
 //     FROM_HERE,
-//     RunWhileLocked(base::Bind(&CallbackWrapper, callback, result)),
+//     RunWhileLocked(
+//         base::BindOnce(&CallbackWrapper, std::move(callback), result)),
 //     delay_in_ms);
 //
 // In normal usage like the above, this all should "just work". However, if you
@@ -397,14 +398,15 @@
 // was run (but can be destroyed with or without the proxy lock acquired). Or
 // (3) destroyed without the proxy lock acquired.
 template <class FunctionType>
-inline base::Callback<FunctionType> RunWhileLocked(
-    const base::Callback<FunctionType>& callback) {
+inline base::OnceCallback<FunctionType> RunWhileLocked(
+    base::OnceCallback<FunctionType> callback) {
   // NOTE: the reason we use "scoped_ptr" here instead of letting the callback
   // own it via base::Owned is kind of subtle. Imagine for the moment that we
   // call RunWhileLocked without the ProxyLock:
   // {
-  //   base::Callback<void ()> local_callback = base::Bind(&Foo);
-  //   some_task_runner.PostTask(FROM_HERE, RunWhileLocked(local_callback));
+  //   base::OnceCallback<void ()> local_callback = base::BinOnced(&Foo);
+  //   some_task_runner.PostTask(FROM_HERE,
+  //                             RunWhileLocked(std::move(local_callback)));
   // }
   // In this case, since we don't have a lock synchronizing us, it's possible
   // for the callback to run on the other thread before we return and destroy
@@ -415,8 +417,8 @@
   // on this thread, which will violate the RunWhileLockedHelper's assumption
   // that it is destroyed on the same thread where it is run.
   std::unique_ptr<internal::RunWhileLockedHelper<FunctionType>> helper(
-      new internal::RunWhileLockedHelper<FunctionType>(callback));
-  return base::Bind(
+      new internal::RunWhileLockedHelper<FunctionType>(std::move(callback)));
+  return base::BindOnce(
       &internal::RunWhileLockedHelper<FunctionType>::CallWhileLocked,
       base::Passed(std::move(helper)));
 }
diff --git a/ppapi/shared_impl/proxy_lock_unittest.cc b/ppapi/shared_impl/proxy_lock_unittest.cc
index e593c7e..2eeef53 100644
--- a/ppapi/shared_impl/proxy_lock_unittest.cc
+++ b/ppapi/shared_impl/proxy_lock_unittest.cc
@@ -76,20 +76,20 @@
   TestGlobals globals;
   expect_to_be_locked = true;
 
-  base::Callback<void()> cb0;
+  base::OnceCallback<void()> cb0;
   {
     ProxyAutoLock lock;
-    cb0 = RunWhileLocked(base::Bind(TestCallback_0));
+    cb0 = RunWhileLocked(base::BindOnce(TestCallback_0));
   }
-  cb0.Run();
+  std::move(cb0).Run();
   ASSERT_EQ(1, called_num);
   called_num = 0;
 
   {
     ProxyAutoLock lock;
-    cb0 = RunWhileLocked(base::Bind(TestCallback_1, 123));
+    cb0 = RunWhileLocked(base::BindOnce(TestCallback_1, 123));
   }
-  cb0.Run();
+  std::move(cb0).Run();
   ASSERT_EQ(1, called_num);
   called_num = 0;
 
@@ -97,55 +97,56 @@
     ProxyAutoLock lock;
     scoped_refptr<CheckLockStateInDestructor> object =
         new CheckLockStateInDestructor();
-    cb0 =
-        RunWhileLocked(base::Bind(&CheckLockStateInDestructor::Method, object));
+    cb0 = RunWhileLocked(
+        base::BindOnce(&CheckLockStateInDestructor::Method, object));
     // Note after this scope, the Callback owns the only reference.
   }
-  cb0.Run();
+  std::move(cb0).Run();
   ASSERT_EQ(1, called_num);
   called_num = 0;
 
-  base::Callback<void(int)> cb1;
+  base::OnceCallback<void(int)> cb1;
   {
     ProxyAutoLock lock;
-    cb1 = RunWhileLocked(base::Bind(TestCallback_1));
+    cb1 = RunWhileLocked(base::BindOnce(TestCallback_1));
   }
-  cb1.Run(123);
+  std::move(cb1).Run(123);
   ASSERT_EQ(1, called_num);
   called_num = 0;
 
-  base::Callback<void(int, const std::string&)> cb2;
+  base::OnceCallback<void(int, const std::string&)> cb2;
   {
     ProxyAutoLock lock;
-    cb2 = RunWhileLocked(base::Bind(TestCallback_2));
+    cb2 = RunWhileLocked(base::BindOnce(TestCallback_2));
   }
-  cb2.Run(123, std::string("yo"));
+  std::move(cb2).Run(123, std::string("yo"));
   ASSERT_EQ(1, called_num);
   called_num = 0;
 
-  base::Callback<void(int, const std::string&, Param)> cb3;
+  base::OnceCallback<void(int, const std::string&, Param)> cb3;
   {
     ProxyAutoLock lock;
-    cb3 = RunWhileLocked(base::Bind(TestCallback_3));
+    cb3 = RunWhileLocked(base::BindOnce(TestCallback_3));
   }
-  cb3.Run(123, std::string("yo"), Param());
+  std::move(cb3).Run(123, std::string("yo"), Param());
   ASSERT_EQ(1, called_num);
   called_num = 0;
 
-  base::Callback<void(const std::string&)> cb1_string;
+  base::OnceCallback<void(const std::string&)> cb1_string;
   {
     ProxyAutoLock lock;
-    cb1_string = RunWhileLocked(base::Bind(TestCallback_2, 123));
+    cb1_string = RunWhileLocked(base::BindOnce(TestCallback_2, 123));
   }
-  cb1_string.Run(std::string("yo"));
+  std::move(cb1_string).Run(std::string("yo"));
   ASSERT_EQ(1, called_num);
   called_num = 0;
 
   {
     ProxyAutoLock lock;
-    cb0 = RunWhileLocked(base::Bind(TestCallback_2, 123, std::string("yo")));
+    cb0 =
+        RunWhileLocked(base::BindOnce(TestCallback_2, 123, std::string("yo")));
   }
-  cb0.Run();
+  std::move(cb0).Run();
   ASSERT_EQ(1, called_num);
   called_num = 0;
 }
@@ -168,16 +169,13 @@
     called_num = 0;
   }
   {
-    // TODO(dmichael): Make const-ref arguments work properly with type
-    // deduction.
-    CallWhileUnlocked<void, int, const std::string&>(
-        TestCallback_2, 123, std::string("yo"));
+    CallWhileUnlocked(TestCallback_2, 123, std::string("yo"));
     ASSERT_EQ(1, called_num);
     called_num = 0;
   }
   {
-    base::Callback<void()> callback(base::Bind(TestCallback_0));
-    CallWhileUnlocked(callback);
+    base::OnceCallback<void()> callback(base::BindOnce(TestCallback_0));
+    CallWhileUnlocked(std::move(callback));
     ASSERT_EQ(1, called_num);
     called_num = 0;
   }
diff --git a/ppapi/shared_impl/thread_aware_callback.cc b/ppapi/shared_impl/thread_aware_callback.cc
index 4739a94..6019c7b2 100644
--- a/ppapi/shared_impl/thread_aware_callback.cc
+++ b/ppapi/shared_impl/thread_aware_callback.cc
@@ -18,9 +18,9 @@
 
   void MarkAsAborted() { aborted_ = true; }
 
-  void RunIfNotAborted(const base::Closure& closure) {
+  void RunIfNotAborted(base::OnceClosure closure) {
     if (!aborted_)
-      CallWhileUnlocked(closure);
+      CallWhileUnlocked(std::move(closure));
   }
 
  private:
@@ -44,14 +44,15 @@
 }
 
 void ThreadAwareCallbackBase::InternalRunOnTargetThread(
-    const base::Closure& closure) {
+    base::OnceClosure closure) {
   if (target_loop_.get() != PpapiGlobals::Get()->GetCurrentMessageLoop()) {
     target_loop_->PostClosure(
         FROM_HERE,
-        RunWhileLocked(base::Bind(&Core::RunIfNotAborted, core_, closure)),
+        RunWhileLocked(
+            base::BindOnce(&Core::RunIfNotAborted, core_, std::move(closure))),
         0);
   } else {
-    CallWhileUnlocked(closure);
+    CallWhileUnlocked(std::move(closure));
   }
 }
 
diff --git a/ppapi/shared_impl/thread_aware_callback.h b/ppapi/shared_impl/thread_aware_callback.h
index e65acca..1806446 100644
--- a/ppapi/shared_impl/thread_aware_callback.h
+++ b/ppapi/shared_impl/thread_aware_callback.h
@@ -24,7 +24,7 @@
 
   static bool HasTargetLoop();
 
-  void InternalRunOnTargetThread(const base::Closure& closure);
+  void InternalRunOnTargetThread(base::OnceClosure closure);
 
  private:
   class Core;
diff --git a/ppapi/shared_impl/tracked_callback.cc b/ppapi/shared_impl/tracked_callback.cc
index 1dae2ec2..2bc0642 100644
--- a/ppapi/shared_impl/tracked_callback.cc
+++ b/ppapi/shared_impl/tracked_callback.cc
@@ -256,17 +256,17 @@
     // directly.
     SignalBlockingCallback(result);
   } else {
-    base::Closure callback_closure(
-        RunWhileLocked(base::Bind(&TrackedCallback::Run, this, result)));
+    base::OnceClosure callback_closure(
+        RunWhileLocked(base::BindOnce(&TrackedCallback::Run, this, result)));
     if (target_loop_) {
-      target_loop_->PostClosure(FROM_HERE, callback_closure, 0);
+      target_loop_->PostClosure(FROM_HERE, std::move(callback_closure), 0);
     } else {
       // We must be running in-process and on the main thread (the Enter
       // classes protect against having a null target_loop_ otherwise).
       DCHECK(IsMainThread());
       DCHECK(PpapiGlobals::Get()->IsHostGlobals());
-      base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
-                                                    callback_closure);
+      base::ThreadTaskRunnerHandle::Get()->PostTask(
+          FROM_HERE, std::move(callback_closure));
     }
   }
   is_scheduled_ = true;
diff --git a/printing/backend/cups_printer.cc b/printing/backend/cups_printer.cc
index ce0d781..c7d1893 100644
--- a/printing/backend/cups_printer.cc
+++ b/printing/backend/cups_printer.cc
@@ -16,6 +16,7 @@
 
 namespace {
 
+const char kCUPSDeviceUri[] = "device-uri";
 const char kCUPSPrinterInfoOpt[] = "printer-info";
 const char kCUPSPrinterStateOpt[] = "printer-state";
 
@@ -123,6 +124,12 @@
   return make_and_model ? std::string(make_and_model) : std::string();
 }
 
+std::string CupsPrinter::GetUri() const {
+  const char* uri = cupsGetOption(kCUPSDeviceUri, destination_->num_options,
+                                  destination_->options);
+  return uri ? std::string(uri) : std::string();
+}
+
 bool CupsPrinter::EnsureDestInfo() const {
   if (dest_info_)
     return true;
diff --git a/printing/backend/cups_printer.h b/printing/backend/cups_printer.h
index c1310ac..7efb68c 100644
--- a/printing/backend/cups_printer.h
+++ b/printing/backend/cups_printer.h
@@ -77,6 +77,8 @@
 
   std::string GetMakeAndModel() const;
 
+  std::string GetUri() const;
+
   // Lazily initialize dest info as it can require a network call
   bool EnsureDestInfo() const;
 
diff --git a/printing/printing_context_chromeos.cc b/printing/printing_context_chromeos.cc
index f7b1680..f976bea1 100644
--- a/printing/printing_context_chromeos.cc
+++ b/printing/printing_context_chromeos.cc
@@ -356,6 +356,15 @@
   SetPrintableArea(settings_.get(), media, true);
   cups_options_ = SettingsToCupsOptions(*settings_);
   send_user_info_ = settings_->send_user_info();
+  if (send_user_info_) {
+    DCHECK(printer_);
+    std::string uri_string = printer_->GetUri();
+    const base::StringPiece uri(uri_string);
+    if (!uri.starts_with("ipps:") && !uri.starts_with("https:") &&
+        !uri.starts_with("usb:") && !uri.starts_with("ippusb:")) {
+      return OnError();
+    }
+  }
   username_ = send_user_info_ ? settings_->username() : std::string();
 
   return OK;
diff --git a/services/tracing/BUILD.gn b/services/tracing/BUILD.gn
index 6c3f1013..101b8c61 100644
--- a/services/tracing/BUILD.gn
+++ b/services/tracing/BUILD.gn
@@ -66,13 +66,11 @@
     "//third_party/perfetto/protos/perfetto/trace:lite",
   ]
 
-  if (is_android) {
+  if (is_posix) {
     sources += [
       "perfetto/system_test_utils.cc",
       "perfetto/system_test_utils.h",
     ]
-
-    deps += [ "//third_party/perfetto/src/tracing:ipc" ]
   }
 }
 
@@ -110,9 +108,8 @@
     "//third_party/perfetto/protos/perfetto/trace/track_event:lite",
   ]
 
-  if (is_android) {
+  if (is_posix) {
     sources += [ "perfetto/system_perfetto_unittest.cc" ]
-    deps += [ "//third_party/perfetto/include/perfetto/ext/tracing/ipc" ]
 
     if (can_unwind_with_cfi_table && is_official_build) {
       sources +=
diff --git a/services/tracing/perfetto/system_perfetto_unittest.cc b/services/tracing/perfetto/system_perfetto_unittest.cc
index 38b7ad0..ec2f0dfc 100644
--- a/services/tracing/perfetto/system_perfetto_unittest.cc
+++ b/services/tracing/perfetto/system_perfetto_unittest.cc
@@ -9,7 +9,6 @@
 #include <thread>
 #include <utility>
 
-#include "base/android/build_info.h"
 #include "base/bind.h"
 #include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
@@ -20,6 +19,7 @@
 #include "base/test/bind_test_util.h"
 #include "base/test/scoped_feature_list.h"
 #include "base/test/task_environment.h"
+#include "build/build_config.h"
 #include "services/tracing/perfetto/perfetto_service.h"
 #include "services/tracing/perfetto/producer_host.h"
 #include "services/tracing/perfetto/system_test_utils.h"
@@ -33,6 +33,10 @@
 #include "third_party/perfetto/protos/perfetto/config/trace_config.pb.h"
 #include "third_party/perfetto/protos/perfetto/trace/trace.pb.h"
 
+#if defined(OS_ANDROID)
+#include "base/android/build_info.h"  // nogncheck
+#endif                                // defined(OS_ANDROID)
+
 namespace tracing {
 
 namespace {
@@ -114,22 +118,22 @@
     RunUntilIdle();
   }
 
-  std::unique_ptr<MockAndroidSystemProducer> CreateMockAndroidSystemProducer(
+  std::unique_ptr<MockPosixSystemProducer> CreateMockPosixSystemProducer(
       MockSystemService* service,
       int num_data_sources_expected = 0,
       base::RunLoop* system_data_source_enabled_runloop = nullptr,
       base::RunLoop* system_data_source_disabled_runloop = nullptr,
       bool check_sdk_level = false) {
-    std::unique_ptr<MockAndroidSystemProducer> result;
+    std::unique_ptr<MockPosixSystemProducer> result;
     base::RunLoop loop_finished;
-    // When we construct a MockAndroidSystemProducer it needs to be on the
+    // When we construct a MockPosixSystemProducer it needs to be on the
     // correct sequence. Construct it on the task runner and wait on the
     // |loop_finished| to ensure it is completely set up.
     PerfettoTracedProcess::GetTaskRunner()
         ->GetOrCreateTaskRunner()
         ->PostTaskAndReply(
             FROM_HERE, base::BindLambdaForTesting([&]() {
-              result.reset(new MockAndroidSystemProducer(
+              result.reset(new MockPosixSystemProducer(
                   service->producer(), check_sdk_level,
                   num_data_sources_expected,
                   system_data_source_enabled_runloop
@@ -235,7 +239,7 @@
   // Set up the producer to talk to the system.
   base::RunLoop system_data_source_enabled_runloop;
   base::RunLoop system_data_source_disabled_runloop;
-  auto system_producer = CreateMockAndroidSystemProducer(
+  auto system_producer = CreateMockPosixSystemProducer(
       system_service.get(),
       /* num_data_sources = */ 1, &system_data_source_enabled_runloop,
       &system_data_source_disabled_runloop);
@@ -269,52 +273,6 @@
   PerfettoProducer::DeleteSoonForTesting(std::move(system_producer));
 }
 
-// TODO(crbug/964324): We need to run this test in permissive mode, but
-// currently the bots don't do that. We should switch this to a telemetry
-// test to ensure our integration works on P+ Android devices.
-TEST_F(SystemPerfettoTest, DISABLED_SystemTraceEndToEndRealService) {
-  if (base::android::BuildInfo::GetInstance()->sdk_int() <
-      base::android::SDK_VERSION_P) {
-    LOG(INFO)
-        << "Skipping SystemTraceEndToEndRealService test, this phone "
-        << "is pre P SDK, which means there is no 'real' service running.";
-    return;
-  }
-
-  perfetto::protos::TraceConfig trace_config;
-  trace_config.add_buffers()->set_size_kb(1024);
-  trace_config.add_data_sources()->mutable_config()->set_name(
-      data_sources_[0]->name());
-  trace_config.add_data_sources()->mutable_config()->set_name(
-      data_sources_[2]->name());
-  trace_config.set_duration_ms(100);
-
-  std::string path = "/data/misc/perfetto-traces/trace";
-  path += RandomASCII(16);
-  EXPECT_TRUE(
-      ExecPerfetto({"-o", path, "-c"}, trace_config.SerializeAsString()))
-      << "failed with stderr: \"" << stderr_ << "\"";
-
-  char* data = new char[1024 * 1024];
-  ASSERT_TRUE(data);
-  int num_bytes = base::ReadFile(base::FilePath(path), data, (1024 * 1024) - 1);
-  EXPECT_NE(num_bytes, -1);
-  std::string output(data, num_bytes);
-  delete[] data;
-
-  perfetto::protos::Trace trace;
-  EXPECT_TRUE(trace.ParseFromString(output));
-
-  int count = 0;
-  for (const auto& packet : trace.packet()) {
-    if (packet.has_for_testing()) {
-      ++count;
-    }
-  }
-  EXPECT_EQ(1 + 7, count);
-  EXPECT_EQ(0, remove(path.c_str()));
-}
-
 TEST_F(SystemPerfettoTest, OneSystemSourceWithMultipleLocalSources) {
   auto system_service = CreateMockSystemService();
 
@@ -330,7 +288,7 @@
 
   base::RunLoop system_data_source_enabled_runloop;
   base::RunLoop system_data_source_disabled_runloop;
-  auto system_producer = CreateMockAndroidSystemProducer(
+  auto system_producer = CreateMockPosixSystemProducer(
       system_service.get(),
       /* num_data_sources = */ 1, &system_data_source_enabled_runloop,
       &system_data_source_disabled_runloop);
@@ -472,7 +430,7 @@
 
   base::RunLoop system_data_source_enabled_runloop;
   base::RunLoop system_data_source_disabled_runloop;
-  auto system_producer = CreateMockAndroidSystemProducer(
+  auto system_producer = CreateMockPosixSystemProducer(
       system_service.get(),
       /* num_data_sources = */ 3, &system_data_source_enabled_runloop,
       &system_data_source_disabled_runloop);
@@ -544,7 +502,7 @@
 
   base::RunLoop system_data_source_enabled_runloop;
   base::RunLoop system_data_source_disabled_runloop;
-  auto system_producer = CreateMockAndroidSystemProducer(
+  auto system_producer = CreateMockPosixSystemProducer(
       system_service.get(),
       /* num_data_sources = */ 3, &system_data_source_enabled_runloop,
       &system_data_source_disabled_runloop);
@@ -629,7 +587,7 @@
   // trace starts.
   base::RunLoop system_data_source_enabled_runloop;
   base::RunLoop system_data_source_disabled_runloop;
-  auto system_producer = CreateMockAndroidSystemProducer(
+  auto system_producer = CreateMockPosixSystemProducer(
       system_service.get(),
       /* num_data_sources = */ 3, &system_data_source_enabled_runloop,
       &system_data_source_disabled_runloop);
@@ -727,6 +685,7 @@
   PerfettoProducer::DeleteSoonForTesting(std::move(system_producer));
 }
 
+#if defined(OS_ANDROID)
 TEST_F(SystemPerfettoTest, SystemToLowAPILevel) {
   if (base::android::BuildInfo::GetInstance()->sdk_int() >=
       base::android::SDK_VERSION_P) {
@@ -763,7 +722,7 @@
 
     base::RunLoop system_data_source_enabled_runloop;
     base::RunLoop system_data_source_disabled_runloop;
-    auto system_producer = CreateMockAndroidSystemProducer(
+    auto system_producer = CreateMockPosixSystemProducer(
         system_service.get(),
         /* num_data_sources = */ 1, &system_data_source_enabled_runloop,
         &system_data_source_disabled_runloop, check_sdk_level);
@@ -817,8 +776,10 @@
                     ->IsDummySystemProducerForTesting());
   }
 }
+#endif  // defined(OS_ANDROID)
 
 TEST_F(SystemPerfettoTest, RespectsFeatureList) {
+#if defined(OS_ANDROID)
   if (base::android::BuildInfo::GetInstance()->is_debug_android()) {
     // The feature list is ignored on debug android builds so we should have a
     // real system producer so just bail out of this test.
@@ -827,6 +788,7 @@
                      ->IsDummySystemProducerForTesting());
     return;
   }
+#endif  // defined(OS_ANDROID)
   {
     base::test::ScopedFeatureList feature_list;
     feature_list.InitAndEnableFeature(features::kEnablePerfettoSystemTracing);
diff --git a/services/tracing/perfetto/system_test_utils.cc b/services/tracing/perfetto/system_test_utils.cc
index 7cde12c..6021cb58 100644
--- a/services/tracing/perfetto/system_test_utils.cc
+++ b/services/tracing/perfetto/system_test_utils.cc
@@ -82,14 +82,14 @@
   return service_->service();
 }
 
-MockAndroidSystemProducer::MockAndroidSystemProducer(
+MockPosixSystemProducer::MockPosixSystemProducer(
     const std::string& socket,
     bool check_sdk_level,
     uint32_t num_data_sources,
     base::OnceClosure data_source_enabled_callback,
     base::OnceClosure data_source_disabled_callback)
-    : AndroidSystemProducer(socket.c_str(),
-                            PerfettoTracedProcess::Get()->GetTaskRunner()),
+    : PosixSystemProducer(socket.c_str(),
+                          PerfettoTracedProcess::Get()->GetTaskRunner()),
       num_data_sources_expected_(num_data_sources),
       data_source_enabled_callback_(std::move(data_source_enabled_callback)),
       data_source_disabled_callback_(std::move(data_source_disabled_callback)) {
@@ -97,7 +97,7 @@
   // ownership of ourselves to PerfettoTracedProcess. Since someone else manages
   // our deletion we need to be careful in the deconstructor to not double free
   // ourselves (so we must call release once we get back our pointer.
-  std::unique_ptr<MockAndroidSystemProducer> client;
+  std::unique_ptr<MockPosixSystemProducer> client;
   client.reset(this);
   old_producer_ = PerfettoTracedProcess::Get()->SetSystemProducerForTesting(
       std::move(client));
@@ -105,7 +105,7 @@
   Connect();
 }
 
-MockAndroidSystemProducer::~MockAndroidSystemProducer() {
+MockPosixSystemProducer::~MockPosixSystemProducer() {
   // See comment in the constructor.
   auto client = PerfettoTracedProcess::Get()->SetSystemProducerForTesting(
       std::move(old_producer_));
@@ -113,10 +113,10 @@
   client.release();
 }
 
-void MockAndroidSystemProducer::StartDataSource(
+void MockPosixSystemProducer::StartDataSource(
     perfetto::DataSourceInstanceID id,
     const perfetto::DataSourceConfig& data_source_config) {
-  AndroidSystemProducer::StartDataSource(id, data_source_config);
+  PosixSystemProducer::StartDataSource(id, data_source_config);
   CHECK_LT(num_data_sources_active_, num_data_sources_expected_);
   if (++num_data_sources_active_ == num_data_sources_expected_ &&
       data_source_enabled_callback_) {
@@ -124,27 +124,27 @@
   }
 }
 
-void MockAndroidSystemProducer::StopDataSource(
+void MockPosixSystemProducer::StopDataSource(
     perfetto::DataSourceInstanceID id) {
-  AndroidSystemProducer::StopDataSource(id);
+  PosixSystemProducer::StopDataSource(id);
   CHECK_GT(num_data_sources_active_, 0u);
   if (--num_data_sources_active_ == 0 && data_source_disabled_callback_) {
     std::move(data_source_disabled_callback_).Run();
   }
 }
 
-void MockAndroidSystemProducer::CommitData(
+void MockPosixSystemProducer::CommitData(
     const perfetto::CommitDataRequest& commit,
     CommitDataCallback callback) {
-  AndroidSystemProducer::CommitData(commit, callback);
+  PosixSystemProducer::CommitData(commit, callback);
 }
 
-void MockAndroidSystemProducer::SetDataSourceEnabledCallback(
+void MockPosixSystemProducer::SetDataSourceEnabledCallback(
     base::OnceClosure data_source_enabled_callback) {
   data_source_enabled_callback_ = std::move(data_source_enabled_callback);
 }
 
-void MockAndroidSystemProducer::SetDataSourceDisabledCallback(
+void MockPosixSystemProducer::SetDataSourceDisabledCallback(
     base::OnceClosure data_source_disabled_callback) {
   data_source_disabled_callback_ = std::move(data_source_disabled_callback);
 }
diff --git a/services/tracing/perfetto/system_test_utils.h b/services/tracing/perfetto/system_test_utils.h
index 32dd57d..7afe6cf5 100644
--- a/services/tracing/perfetto/system_test_utils.h
+++ b/services/tracing/perfetto/system_test_utils.h
@@ -7,7 +7,7 @@
 
 #include <string>
 
-#include "services/tracing/public/cpp/perfetto/android_system_producer.h"
+#include "services/tracing/public/cpp/perfetto/posix_system_producer.h"
 
 namespace base {
 class ScopedTempDir;
@@ -45,16 +45,16 @@
   std::unique_ptr<perfetto::base::TaskRunner> task_runner_;
 };
 
-class MockAndroidSystemProducer : public AndroidSystemProducer {
+class MockPosixSystemProducer : public PosixSystemProducer {
  public:
-  MockAndroidSystemProducer(
+  MockPosixSystemProducer(
       const std::string& socket,
       bool check_sdk_level = false,
       uint32_t num_data_sources = 0,
       base::OnceClosure data_source_enabled_callback = base::OnceClosure(),
       base::OnceClosure data_source_disabled_callback = base::OnceClosure());
 
-  ~MockAndroidSystemProducer() override;
+  ~MockPosixSystemProducer() override;
 
   void StartDataSource(
       perfetto::DataSourceInstanceID id,
diff --git a/services/tracing/public/cpp/BUILD.gn b/services/tracing/public/cpp/BUILD.gn
index b412100..2cee8de 100644
--- a/services/tracing/public/cpp/BUILD.gn
+++ b/services/tracing/public/cpp/BUILD.gn
@@ -32,7 +32,6 @@
 
 target(tracing_lib_type, "cpp") {
   sources = [
-    "perfetto/event_context.h",
     "perfetto/macros.h",
     "perfetto/macros_internal.h",
   ]
@@ -57,7 +56,6 @@
       "base_agent.h",
       "perfetto/dummy_producer.cc",
       "perfetto/dummy_producer.h",
-      "perfetto/event_context.h",
       "perfetto/interning_index.h",
       "perfetto/java_heap_profiler/hprof_buffer_android.cc",
       "perfetto/java_heap_profiler/hprof_buffer_android.h",
@@ -117,12 +115,11 @@
     ]
 
     # Add the SystemProducer implementations.
-    if (is_android) {
+    if (is_posix) {
       sources += [
-        "perfetto/android_system_producer.cc",
-        "perfetto/android_system_producer.h",
+        "perfetto/posix_system_producer.cc",
+        "perfetto/posix_system_producer.h",
       ]
-      deps += [ "//third_party/perfetto/src/tracing:ipc" ]
     }
 
     if (is_android && can_unwind_with_cfi_table && is_official_build) {
diff --git a/services/tracing/public/cpp/perfetto/event_context.h b/services/tracing/public/cpp/perfetto/event_context.h
deleted file mode 100644
index 58077bc..0000000
--- a/services/tracing/public/cpp/perfetto/event_context.h
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2019 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef SERVICES_TRACING_PUBLIC_CPP_PERFETTO_EVENT_CONTEXT_H_
-#define SERVICES_TRACING_PUBLIC_CPP_PERFETTO_EVENT_CONTEXT_H_
-
-#include "third_party/perfetto/protos/perfetto/trace/trace_packet.pbzero.h"
-
-namespace perfetto {
-
-// An EventContext allows use of the TRACE_EVENT_BEGIN/TRACE_EVENT_END
-// functions to access the protozero TrackEvent to fill in typed arguments.
-//
-// TODO(nuskos): Switch chrome over to the perfetto client library's
-// EventContext.
-class EventContext {
- public:
-  EventContext(protos::pbzero::TrackEvent* event) : event_(event) {}
-
-  protos::pbzero::TrackEvent* event() const { return event_; }
-
- private:
-  protos::pbzero::TrackEvent* event_;
-};
-
-}  // namespace perfetto
-
-#endif  // SERVICES_TRACING_PUBLIC_CPP_PERFETTO_EVENT_CONTEXT_H_
diff --git a/services/tracing/public/cpp/perfetto/macros.h b/services/tracing/public/cpp/perfetto/macros.h
index 0ee1edac..d239cc7 100644
--- a/services/tracing/public/cpp/perfetto/macros.h
+++ b/services/tracing/public/cpp/perfetto/macros.h
@@ -10,7 +10,7 @@
 
 // Needed not for this file but for every user of the TRACE_EVENT macros for the
 // lambda definition. So included here for convenience.
-#include "services/tracing/public/cpp/perfetto/event_context.h"
+#include "third_party/perfetto/include/perfetto/tracing/event_context.h"
 #include "third_party/perfetto/protos/perfetto/trace/track_event/track_event.pbzero.h"
 
 #if defined(TRACE_EVENT_BEGIN)
diff --git a/services/tracing/public/cpp/perfetto/macros_internal.h b/services/tracing/public/cpp/perfetto/macros_internal.h
index cbe0240..0dc9fa6 100644
--- a/services/tracing/public/cpp/perfetto/macros_internal.h
+++ b/services/tracing/public/cpp/perfetto/macros_internal.h
@@ -75,7 +75,7 @@
       /* for any TrackEventArgumentFunction in |__VA_ARGS__|. This is     */  \
       /* required so that the scoped event is exactly ONE line and can't  */  \
       /* escape the scope if used in a single line if statement.          */  \
-      ScopedTraceEvent(int) {}                                                \
+      ScopedTraceEvent(int) {} /* NOLINT */                                   \
       ~ScopedTraceEvent() {                                                   \
         /* TODO(nuskos): Remove the empty string passed as the |name|  */     \
         /* field. As described in macros.h we shouldn't need it in our */     \
diff --git a/services/tracing/public/cpp/perfetto/perfetto_traced_process.cc b/services/tracing/public/cpp/perfetto/perfetto_traced_process.cc
index 24a37c54..8e8a298 100644
--- a/services/tracing/public/cpp/perfetto/perfetto_traced_process.cc
+++ b/services/tracing/public/cpp/perfetto/perfetto_traced_process.cc
@@ -15,7 +15,7 @@
 #include "services/tracing/public/cpp/trace_startup.h"
 #include "services/tracing/public/cpp/tracing_features.h"
 
-#if defined(OS_ANDROID)
+#if defined(OS_POSIX)
 // As per 'gn help check':
 /*
   If you have conditional includes, make sure the build conditions and the
@@ -24,29 +24,29 @@
 */
 // We add the nogncheck to ensure this doesn't trigger incorrect errors on
 // non-android builds.
-#include "services/tracing/public/cpp/perfetto/android_system_producer.h"  // nogncheck
+#include "services/tracing/public/cpp/perfetto/posix_system_producer.h"  // nogncheck
 #include "third_party/perfetto/include/perfetto/ext/tracing/ipc/default_socket.h"  // nogncheck
-#endif  // defined(OS_ANDROID)
+#endif  // defined(OS_POSIX)
 
 namespace tracing {
 namespace {
 std::unique_ptr<SystemProducer> NewSystemProducer(PerfettoTaskRunner* runner,
                                                   const char* socket_name) {
-#if defined(OS_ANDROID)
+#if defined(OS_POSIX)
   if (ShouldSetupSystemTracing()) {
     DCHECK(socket_name);
-    return std::make_unique<AndroidSystemProducer>(socket_name, runner);
+    return std::make_unique<PosixSystemProducer>(socket_name, runner);
   }
-#endif  // defined(OS_ANDROID)
+#endif  // defined(OS_POSIX)
   return std::make_unique<DummyProducer>(runner);
 }
 
 const char* MaybeSocket() {
-#if defined(OS_ANDROID)
+#if defined(OS_POSIX)
   return perfetto::GetProducerSocket();
 #else
   return nullptr;
-#endif  // defined(OS_ANDROID)
+#endif  // defined(OS_POSIX)
 }
 }  // namespace
 
@@ -217,7 +217,7 @@
     }
   } else {
     // In tests this is possible due to the periodic polling of CanStartTracing
-    // by the AndroidSystemProducer, when we swap it out for a
+    // by the PosixSystemProducer, when we swap it out for a
     // MockSystemProducer there can be three PerfettoProducers calling this
     // function. In production nothing ever calls the
     // |Set.*ProducerForTesting()| functions so this should never be reached.
diff --git a/services/tracing/public/cpp/perfetto/android_system_producer.cc b/services/tracing/public/cpp/perfetto/posix_system_producer.cc
similarity index 82%
rename from services/tracing/public/cpp/perfetto/android_system_producer.cc
rename to services/tracing/public/cpp/perfetto/posix_system_producer.cc
index e443567..c0334fe3 100644
--- a/services/tracing/public/cpp/perfetto/android_system_producer.cc
+++ b/services/tracing/public/cpp/perfetto/posix_system_producer.cc
@@ -2,15 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "services/tracing/public/cpp/perfetto/android_system_producer.h"
+#include "services/tracing/public/cpp/perfetto/posix_system_producer.h"
 
 #include <utility>
 
-#include "base/android/build_info.h"
 #include "base/bind.h"
 #include "base/strings/strcat.h"
 #include "base/strings/string_number_conversions.h"
 #include "base/trace_event/trace_log.h"
+#include "build/build_config.h"
 #include "services/tracing/public/cpp/perfetto/shared_memory.h"
 #include "services/tracing/public/cpp/traced_process_impl.h"
 #include "third_party/perfetto/include/perfetto/ext/tracing/core/commit_data_request.h"
@@ -22,6 +22,10 @@
 #include "third_party/perfetto/include/perfetto/protozero/scattered_stream_writer.h"
 #include "third_party/perfetto/protos/perfetto/common/track_event_descriptor.pbzero.h"
 
+#if defined(OS_ANDROID)
+#include "base/android/build_info.h"
+#endif  // defined(OS_ANDROID)
+
 namespace tracing {
 namespace {
 constexpr uint32_t kInitialConnectionBackoffMs = 100;
@@ -45,19 +49,19 @@
 }
 }  // namespace
 
-AndroidSystemProducer::AndroidSystemProducer(const char* socket,
-                                             PerfettoTaskRunner* task_runner)
+PosixSystemProducer::PosixSystemProducer(const char* socket,
+                                         PerfettoTaskRunner* task_runner)
     : SystemProducer(task_runner),
       socket_name_(socket),
       connection_backoff_ms_(kInitialConnectionBackoffMs) {
   Connect();
 }
 
-AndroidSystemProducer::~AndroidSystemProducer() {
+PosixSystemProducer::~PosixSystemProducer() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 }
 
-void AndroidSystemProducer::SetDisallowPreAndroidPieForTesting(bool disallow) {
+void PosixSystemProducer::SetDisallowPreAndroidPieForTesting(bool disallow) {
   disallow_pre_android_pie = disallow;
   if (!disallow && state_ == State::kUninitialized) {
     // If previously we would not have connected, we now attempt to connect
@@ -66,12 +70,12 @@
   }
 }
 
-void AndroidSystemProducer::SetNewSocketForTesting(const char* socket) {
+void PosixSystemProducer::SetNewSocketForTesting(const char* socket) {
   socket_name_ = socket;
   if (state_ == State::kConnected) {
     // If we are fully connected we need to reset the service before we
     // reconnect.
-    DisconnectWithReply(base::BindOnce(&AndroidSystemProducer::OnDisconnect,
+    DisconnectWithReply(base::BindOnce(&PosixSystemProducer::OnDisconnect,
                                        base::Unretained(this)));
   } else {
     // In any other case we just need to do a normal disconnect and
@@ -81,21 +85,21 @@
   }
 }
 
-void AndroidSystemProducer::ResetSequenceForTesting() {
+void PosixSystemProducer::ResetSequenceForTesting() {
   // DETACH the sequence and then immediately attach it. This is needed in tests
   // because we might be executing in a TaskEnvironment, but the global
-  // PerfettoTracedProcess (which contains a pointer to AndroidSystemProducer)
+  // PerfettoTracedProcess (which contains a pointer to PosixSystemProducer)
   // will leak between tests, but the sequence will no longer be valid.
   DETACH_FROM_SEQUENCE(sequence_checker_);
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
 }
 
-bool AndroidSystemProducer::IsTracingActive() {
+bool PosixSystemProducer::IsTracingActive() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   return data_sources_tracing_ > 0;
 }
 
-void AndroidSystemProducer::NewDataSourceAdded(
+void PosixSystemProducer::NewDataSourceAdded(
     const PerfettoTracedProcess::DataSourceBase* const data_source) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (state_ != State::kConnected) {
@@ -127,7 +131,7 @@
   service_->RegisterDataSource(new_registration);
 }
 
-void AndroidSystemProducer::DisconnectWithReply(
+void PosixSystemProducer::DisconnectWithReply(
     base::OnceClosure on_disconnect_complete) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (state_ == State::kConnected) {
@@ -160,7 +164,7 @@
   DelayedReconnect();
 }
 
-void AndroidSystemProducer::OnConnect() {
+void PosixSystemProducer::OnConnect() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (!PerfettoTracedProcess::Get()->CanStartTracing(this,
                                                      base::OnceClosure())) {
@@ -175,7 +179,7 @@
   }
 }
 
-void AndroidSystemProducer::OnDisconnect() {
+void PosixSystemProducer::OnDisconnect() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(service_.get());
   // Currently our data sources don't support the concept of the service
@@ -188,38 +192,36 @@
   // |ProducerEndpoint| has finished cleaning up.
   task_runner()->GetOrCreateTaskRunner()->PostTask(
       FROM_HERE, base::BindOnce(
-                     [](base::WeakPtr<AndroidSystemProducer> weak_ptr) {
+                     [](base::WeakPtr<PosixSystemProducer> weak_ptr) {
                        if (!weak_ptr) {
                          return;
                        }
                        weak_ptr->service_.reset();
-                       weak_ptr->shared_memory_arbiter_.reset();
                        weak_ptr->shared_memory_ = nullptr;
                        weak_ptr->DelayedReconnect();
                      },
                      weak_ptr_factory_.GetWeakPtr()));
 }
 
-void AndroidSystemProducer::OnTracingSetup() {
+void PosixSystemProducer::OnTracingSetup() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   // TODO(oysteine): plumb this through the service.
   const size_t kShmemBufferPageSize = 4096;
   DCHECK(!shared_memory_);
-  DCHECK(!shared_memory_arbiter_);
   shared_memory_ = service_->shared_memory();
   DCHECK(shared_memory_);
-  shared_memory_arbiter_ = perfetto::SharedMemoryArbiter::CreateInstance(
+  shared_memory_arbiters_.push_back(perfetto::SharedMemoryArbiter::CreateInstance(
       shared_memory_, kShmemBufferPageSize, this,
-      PerfettoTracedProcess::GetTaskRunner());
+      PerfettoTracedProcess::GetTaskRunner()));
 }
 
-void AndroidSystemProducer::SetupDataSource(perfetto::DataSourceInstanceID,
-                                            const perfetto::DataSourceConfig&) {
+void PosixSystemProducer::SetupDataSource(perfetto::DataSourceInstanceID,
+                                          const perfetto::DataSourceConfig&) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   // Always called before StartDataSource but not used for any setup currently.
 }
 
-void AndroidSystemProducer::StartDataSource(
+void PosixSystemProducer::StartDataSource(
     perfetto::DataSourceInstanceID id,
     const perfetto::DataSourceConfig& config) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -229,7 +231,7 @@
       auto can_trace = PerfettoTracedProcess::Get()->CanStartTracing(
           this,
           base::BindOnce(
-              [](base::WeakPtr<AndroidSystemProducer> weak_ptr,
+              [](base::WeakPtr<PosixSystemProducer> weak_ptr,
                  PerfettoTracedProcess::DataSourceBase* data_source,
                  perfetto::DataSourceInstanceID id,
                  const perfetto::DataSourceConfig& data_source_config) {
@@ -252,13 +254,13 @@
   }
 }
 
-void AndroidSystemProducer::StopDataSource(perfetto::DataSourceInstanceID id) {
+void PosixSystemProducer::StopDataSource(perfetto::DataSourceInstanceID id) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   for (auto* const data_source : PerfettoTracedProcess::Get()->data_sources()) {
     if (data_source->data_source_id() == id &&
         data_source->producer() == this) {
       data_source->StopTracing(base::BindOnce(
-          [](base::WeakPtr<AndroidSystemProducer> weak_ptr,
+          [](base::WeakPtr<PosixSystemProducer> weak_ptr,
              perfetto::DataSourceInstanceID id) {
             if (!weak_ptr) {
               return;
@@ -279,7 +281,7 @@
   }
 }
 
-void AndroidSystemProducer::Flush(
+void PosixSystemProducer::Flush(
     perfetto::FlushRequestID id,
     const perfetto::DataSourceInstanceID* data_source_ids,
     size_t num_data_sources) {
@@ -290,7 +292,7 @@
                   data_source->data_source_id()) !=
         data_source_ids + num_data_sources) {
       data_source->Flush(base::BindRepeating(
-          [](base::WeakPtr<AndroidSystemProducer> weak_ptr,
+          [](base::WeakPtr<PosixSystemProducer> weak_ptr,
              perfetto::FlushRequestID flush_id) {
             if (weak_ptr) {
               weak_ptr->NotifyFlushComplete(flush_id);
@@ -301,7 +303,7 @@
   }
 }
 
-void AndroidSystemProducer::ClearIncrementalState(
+void PosixSystemProducer::ClearIncrementalState(
     const perfetto::DataSourceInstanceID* data_source_ids,
     size_t num_data_sources) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
@@ -316,23 +318,22 @@
   }
 }
 
-void AndroidSystemProducer::CommitData(
-    const perfetto::CommitDataRequest& commit,
-    CommitDataCallback callback) {
+void PosixSystemProducer::CommitData(const perfetto::CommitDataRequest& commit,
+                                     CommitDataCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(service_);
   service_->CommitData(commit, std::move(callback));
 }
 
-perfetto::SharedMemoryArbiter* AndroidSystemProducer::GetSharedMemoryArbiter() {
-  return shared_memory_arbiter_.get();
+perfetto::SharedMemoryArbiter* PosixSystemProducer::GetSharedMemoryArbiter() {
+  return shared_memory_arbiters_.back().get();
 }
 
-perfetto::SharedMemory* AndroidSystemProducer::shared_memory() const {
+perfetto::SharedMemory* PosixSystemProducer::shared_memory() const {
   return shared_memory_;
 }
 
-void AndroidSystemProducer::NotifyFlushComplete(perfetto::FlushRequestID id) {
+void PosixSystemProducer::NotifyFlushComplete(perfetto::FlushRequestID id) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (pending_replies_for_latest_flush_.first != id) {
     // Ignore; completed flush was for an earlier request.
@@ -341,60 +342,59 @@
 
   DCHECK_NE(pending_replies_for_latest_flush_.second, 0u);
   if (--pending_replies_for_latest_flush_.second == 0) {
-    shared_memory_arbiter_->NotifyFlushComplete(id);
+    GetSharedMemoryArbiter()->NotifyFlushComplete(id);
   }
 }
 
-void AndroidSystemProducer::RegisterTraceWriter(uint32_t writer_id,
-                                                uint32_t target_buffer) {
+void PosixSystemProducer::RegisterTraceWriter(uint32_t writer_id,
+                                              uint32_t target_buffer) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(service_);
   service_->RegisterTraceWriter(writer_id, target_buffer);
 }
 
-void AndroidSystemProducer::UnregisterTraceWriter(uint32_t writer_id) {
+void PosixSystemProducer::UnregisterTraceWriter(uint32_t writer_id) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK(service_);
   service_->UnregisterTraceWriter(writer_id);
 }
 
-void AndroidSystemProducer::RegisterDataSource(
+void PosixSystemProducer::RegisterDataSource(
     const perfetto::DataSourceDescriptor&) {
   // Never called by SharedMemoryArbiter/TraceWriter.
   NOTREACHED();
 }
 
-void AndroidSystemProducer::UnregisterDataSource(const std::string& name) {
+void PosixSystemProducer::UnregisterDataSource(const std::string& name) {
   // Never called by SharedMemoryArbiter/TraceWriter.
   NOTREACHED();
 }
 
-void AndroidSystemProducer::NotifyDataSourceStopped(
+void PosixSystemProducer::NotifyDataSourceStopped(
     perfetto::DataSourceInstanceID id) {
   // Never called by SharedMemoryArbiter/TraceWriter.
   NOTREACHED();
 }
 
-void AndroidSystemProducer::NotifyDataSourceStarted(
+void PosixSystemProducer::NotifyDataSourceStarted(
     perfetto::DataSourceInstanceID id) {
   // Never called by SharedMemoryArbiter/TraceWriter.
   NOTREACHED();
 }
 
-size_t AndroidSystemProducer::shared_buffer_page_size_kb() const {
+size_t PosixSystemProducer::shared_buffer_page_size_kb() const {
   // Never called by SharedMemoryArbiter/TraceWriter.
   NOTREACHED();
   return 0;
 }
 
-perfetto::SharedMemoryArbiter*
-AndroidSystemProducer::GetInProcessShmemArbiter() {
+perfetto::SharedMemoryArbiter* PosixSystemProducer::GetInProcessShmemArbiter() {
   // Never called by SharedMemoryArbiter/TraceWriter.
   NOTREACHED();
   return GetSharedMemoryArbiter();
 }
 
-void AndroidSystemProducer::ActivateTriggers(
+void PosixSystemProducer::ActivateTriggers(
     const std::vector<std::string>& triggers) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   if (state_ == State::kConnected) {
@@ -402,7 +402,7 @@
   }
 }
 
-void AndroidSystemProducer::ConnectSocket() {
+void PosixSystemProducer::ConnectSocket() {
   state_ = State::kConnecting;
   service_ = perfetto::ProducerIPCClient::Connect(
       socket_name_.c_str(), this,
@@ -414,13 +414,16 @@
       perfetto::TracingService::ProducerSMBScrapingMode::kEnabled);
 }
 
-bool AndroidSystemProducer::SkipIfPreAndroidPie() const {
+bool PosixSystemProducer::SkipIfOnAndroidAndPreAndroidPie() const {
+#if defined(OS_ANDROID)
   return disallow_pre_android_pie &&
          base::android::BuildInfo::GetInstance()->sdk_int() <
              base::android::SDK_VERSION_P;
+#endif  // defined(OS_ANDROID)
+  return false;
 }
 
-void AndroidSystemProducer::InvokeStoredOnDisconnectCallbacks() {
+void PosixSystemProducer::InvokeStoredOnDisconnectCallbacks() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   for (auto& callback : on_disconnect_callbacks_) {
     DCHECK(!callback.is_null());
@@ -429,9 +432,9 @@
   on_disconnect_callbacks_.clear();
 }
 
-void AndroidSystemProducer::Connect() {
+void PosixSystemProducer::Connect() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  if (SkipIfPreAndroidPie()) {
+  if (SkipIfOnAndroidAndPreAndroidPie()) {
     return;
   }
   switch (state_) {
@@ -459,9 +462,9 @@
   }
 }
 
-void AndroidSystemProducer::DelayedReconnect() {
+void PosixSystemProducer::DelayedReconnect() {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
-  if (SkipIfPreAndroidPie()) {
+  if (SkipIfOnAndroidAndPreAndroidPie()) {
     return;
   }
   if (state_ == State::kDisconnected) {
@@ -472,7 +475,7 @@
   task_runner()->GetOrCreateTaskRunner()->PostDelayedTask(
       FROM_HERE,
       base::BindOnce(
-          [](base::WeakPtr<AndroidSystemProducer> weak_ptr) {
+          [](base::WeakPtr<PosixSystemProducer> weak_ptr) {
             if (!weak_ptr) {
               return;
             }
diff --git a/services/tracing/public/cpp/perfetto/android_system_producer.h b/services/tracing/public/cpp/perfetto/posix_system_producer.h
similarity index 84%
rename from services/tracing/public/cpp/perfetto/android_system_producer.h
rename to services/tracing/public/cpp/perfetto/posix_system_producer.h
index d093cfb..f9473a3 100644
--- a/services/tracing/public/cpp/perfetto/android_system_producer.h
+++ b/services/tracing/public/cpp/perfetto/posix_system_producer.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef SERVICES_TRACING_PUBLIC_CPP_PERFETTO_ANDROID_SYSTEM_PRODUCER_H_
-#define SERVICES_TRACING_PUBLIC_CPP_PERFETTO_ANDROID_SYSTEM_PRODUCER_H_
+#ifndef SERVICES_TRACING_PUBLIC_CPP_PERFETTO_POSIX_SYSTEM_PRODUCER_H_
+#define SERVICES_TRACING_PUBLIC_CPP_PERFETTO_POSIX_SYSTEM_PRODUCER_H_
 
 #include <memory>
 #include <set>
@@ -26,7 +26,7 @@
 
 namespace tracing {
 
-class COMPONENT_EXPORT(TRACING_CPP) AndroidSystemProducer
+class COMPONENT_EXPORT(TRACING_CPP) PosixSystemProducer
     : public SystemProducer {
  public:
   enum class State {
@@ -35,10 +35,10 @@
     kConnected = 2,
     kDisconnected = 3
   };
-  AndroidSystemProducer(const char* socket, PerfettoTaskRunner* task_runner);
-  ~AndroidSystemProducer() override;
+  PosixSystemProducer(const char* socket, PerfettoTaskRunner* task_runner);
+  ~PosixSystemProducer() override;
 
-  // Functions needed for AndroidSystemProducer only.
+  // Functions needed for PosixSystemProducer only.
   //
   // Lets tests ignore the SDK check (Perfetto only runs on post Android Pie
   // devices by default, so for trybots on older OSs we need to ignore the check
@@ -47,7 +47,7 @@
   // TODO(nuskos): We need to make this possible for telemetry as well, since
   // they might have side loaded the app.
   void SetDisallowPreAndroidPieForTesting(bool disallow);
-  // |socket| must remain alive as long as AndroidSystemProducer is around
+  // |socket| must remain alive as long as PosixSystemProducer is around
   // trying to connect to it.
   void SetNewSocketForTesting(const char* socket);
 
@@ -128,7 +128,7 @@
   void ConnectSocket();
   // Returns true if we should skip setup because this Android device is Android
   // O or below.
-  bool SkipIfPreAndroidPie() const;
+  bool SkipIfOnAndroidAndPreAndroidPie() const;
   // If any OnDisconnect callbacks are stored, this will invoke them and delete
   // references to them must be called on the proper sequence.
   void InvokeStoredOnDisconnectCallbacks();
@@ -146,7 +146,13 @@
 
   // Connection to the Perfetto service and the shared memory that it provides.
   perfetto::SharedMemory* shared_memory_ = nullptr;
-  std::unique_ptr<perfetto::SharedMemoryArbiter> shared_memory_arbiter_;
+  // Arbiters must outlive all trace writers, but some trace writers will never
+  // flush until future tracing sessions, which means even on disconnecting we
+  // have to keep these around. So instead of destroying any arbiters we store
+  // them forever (leaking their amount of memory).
+  //
+  // TODO(nuskos): We should improve this once we're on the client library.
+  std::vector<std::unique_ptr<perfetto::SharedMemoryArbiter>> shared_memory_arbiters_;
   std::unique_ptr<perfetto::TracingService::ProducerEndpoint> service_;
   // First value is the flush ID, the second is the number of
   // replies we're still waiting for.
@@ -155,10 +161,10 @@
   SEQUENCE_CHECKER(sequence_checker_);
   // NOTE: Weak pointers must be invalidated before all other member variables.
   // and thus must be the last member variable.
-  base::WeakPtrFactory<AndroidSystemProducer> weak_ptr_factory_{this};
-  DISALLOW_COPY_AND_ASSIGN(AndroidSystemProducer);
+  base::WeakPtrFactory<PosixSystemProducer> weak_ptr_factory_{this};
+  DISALLOW_COPY_AND_ASSIGN(PosixSystemProducer);
 };
 
 }  // namespace tracing
 
-#endif  // SERVICES_TRACING_PUBLIC_CPP_PERFETTO_ANDROID_SYSTEM_PRODUCER_H_
+#endif  // SERVICES_TRACING_PUBLIC_CPP_PERFETTO_POSIX_SYSTEM_PRODUCER_H_
diff --git a/services/tracing/public/cpp/perfetto/task_runner.cc b/services/tracing/public/cpp/perfetto/task_runner.cc
index 7c851963..6194c97b 100644
--- a/services/tracing/public/cpp/perfetto/task_runner.cc
+++ b/services/tracing/public/cpp/perfetto/task_runner.cc
@@ -27,9 +27,9 @@
 
 PerfettoTaskRunner::~PerfettoTaskRunner() {
   DCHECK(GetOrCreateTaskRunner()->RunsTasksInCurrentSequence());
-#if defined(OS_ANDROID)
+#if defined(OS_POSIX)
   fd_controllers_.clear();
-#endif  // defined(OS_ANDROID)
+#endif  // defined(OS_POSIX)
 }
 
 void PerfettoTaskRunner::PostTask(std::function<void()> task) {
@@ -79,26 +79,48 @@
 void PerfettoTaskRunner::AddFileDescriptorWatch(
     int fd,
     std::function<void()> callback) {
-#if !defined(OS_ANDROID)
+#if !defined(OS_POSIX)
   NOTREACHED();
 #else
   DCHECK(GetOrCreateTaskRunner()->RunsTasksInCurrentSequence());
   DCHECK(!base::Contains(fd_controllers_, fd));
-  fd_controllers_[fd] = base::FileDescriptorWatcher::WatchReadable(
-      fd,
-      base::BindRepeating([](std::function<void()> callback) { callback(); },
-                          std::move(callback)));
-#endif  // !defined(OS_ANDROID)
+  // Set it up as a nullptr to signal intent to add a watch. We need to PostTask the WatchReadable
+  // creation because if we do it in this task we'll race with perfetto setting up the connection
+  // on this task and the IO thread setting up epoll on the |fd|. By posting the task we ensure the
+  // Connection has either succeeded (we find the |fd| in the map) or the connection failed (the
+  // |fd| is not in the map), and we can gracefully handle either case.
+  fd_controllers_[fd];
+  task_runner_->PostTask(
+      FROM_HERE,
+      base::BindOnce(
+          [](PerfettoTaskRunner* perfetto_runner, int fd,
+             std::function<void()> callback) {
+            DCHECK(perfetto_runner->GetOrCreateTaskRunner()
+                       ->RunsTasksInCurrentSequence());
+            auto it = perfetto_runner->fd_controllers_.find(fd);
+            // If we can't find this fd, then RemoveFileDescriptor has already
+            // been called so just early out.
+            if (it == perfetto_runner->fd_controllers_.end()) {
+              return;
+            }
+            DCHECK(!it->second);
+            it->second = base::FileDescriptorWatcher::WatchReadable(
+                fd, base::BindRepeating(
+                        [](std::function<void()> callback) { callback(); },
+                        std::move(callback)));
+          },
+          base::Unretained(this), fd, std::move(callback)));
+#endif  // !defined(OS_POSIX)
 }
 
 void PerfettoTaskRunner::RemoveFileDescriptorWatch(int fd) {
-#if !defined(OS_ANDROID)
+#if !defined(OS_POSIX)
   NOTREACHED();
 #else
   DCHECK(GetOrCreateTaskRunner()->RunsTasksInCurrentSequence());
   DCHECK(base::Contains(fd_controllers_, fd));
   fd_controllers_.erase(fd);
-#endif  // !defined(OS_ANDROID)
+#endif  // !defined(OS_POSIX)
 }
 
 void PerfettoTaskRunner::ResetTaskRunnerForTesting(
diff --git a/services/tracing/public/cpp/perfetto/task_runner.h b/services/tracing/public/cpp/perfetto/task_runner.h
index a5fa194..d57e0975 100644
--- a/services/tracing/public/cpp/perfetto/task_runner.h
+++ b/services/tracing/public/cpp/perfetto/task_runner.h
@@ -16,12 +16,12 @@
 #include "services/tracing/public/mojom/perfetto_service.mojom.h"
 #include "third_party/perfetto/include/perfetto/base/task_runner.h"
 
-#if defined(OS_ANDROID)
-#include <map>
+#if defined(OS_POSIX)
 // Needed for base::FileDescriptorWatcher::Controller and for implementing
-// AddFileDescriptorWatch & RemoveFileDescriptorWatch on Android.
+// AddFileDescriptorWatch & RemoveFileDescriptorWatch.
+#include <map>
 #include "base/files/file_descriptor_watcher_posix.h"
-#endif  // defined(OS_ANDROID)
+#endif  // defined(OS_POSIX)
 
 namespace tracing {
 
@@ -62,10 +62,10 @@
   void OnDeferredTasksDrainTimer();
 
   scoped_refptr<base::SequencedTaskRunner> task_runner_;
-#if defined(OS_ANDROID)
+#if defined(OS_POSIX)
   std::map<int, std::unique_ptr<base::FileDescriptorWatcher::Controller>>
       fd_controllers_;
-#endif  // defined(OS_ANDROID)
+#endif  // defined(OS_POSIX)
 
   DISALLOW_COPY_AND_ASSIGN(PerfettoTaskRunner);
 };
diff --git a/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h b/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h
index d876d3a..1f095059 100644
--- a/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h
+++ b/services/tracing/public/cpp/perfetto/track_event_thread_local_event_sink.h
@@ -16,11 +16,11 @@
 #include "base/threading/thread_id_name_manager.h"
 #include "base/time/time.h"
 #include "base/trace_event/thread_instruction_count.h"
-#include "services/tracing/public/cpp/perfetto/event_context.h"
 #include "services/tracing/public/cpp/perfetto/interning_index.h"
 #include "third_party/perfetto/include/perfetto/ext/tracing/core/startup_trace_writer.h"
 #include "third_party/perfetto/include/perfetto/ext/tracing/core/trace_writer.h"
 #include "third_party/perfetto/include/perfetto/protozero/message_handle.h"
+#include "third_party/perfetto/include/perfetto/tracing/event_context.h"
 #include "third_party/perfetto/protos/perfetto/trace/interned_data/interned_data.pbzero.h"
 #include "third_party/perfetto/protos/perfetto/trace/track_event/thread_descriptor.pbzero.h"
 #include "third_party/perfetto/protos/perfetto/trace/track_event/track_event.pbzero.h"
diff --git a/third_party/blink/PRESUBMIT.py b/third_party/blink/PRESUBMIT.py
index 1dbc369..d9e9db4 100644
--- a/third_party/blink/PRESUBMIT.py
+++ b/third_party/blink/PRESUBMIT.py
@@ -178,7 +178,10 @@
                         path, error.line, error.identifier)
                     if error.advice:
                         msg += ". Advice: %s" % "\n".join(error.advice)
-                    results.append(output_api.PresubmitError(msg))
+                    if error.warning:
+                        results.append(output_api.PresubmitPromptWarning(msg))
+                    else:
+                        results.append(output_api.PresubmitError(msg))
     return results
 
 
diff --git a/third_party/blink/public/mojom/web_feature/web_feature.mojom b/third_party/blink/public/mojom/web_feature/web_feature.mojom
index b123ff61..6ac1a132 100644
--- a/third_party/blink/public/mojom/web_feature/web_feature.mojom
+++ b/third_party/blink/public/mojom/web_feature/web_feature.mojom
@@ -2502,6 +2502,8 @@
   kCSPWithBetterThanReasonableRestrictions = 3137,
   kCSPROWithBetterThanReasonableRestrictions = 3138,
   kMeasureMemory = 3139,
+  kV8Animation_ReplaceState_AttributeGetter = 3140,
+  kV8Animation_Persist_Method = 3141,
 
   // Add new features immediately above this line. Don't change assigned
   // numbers of any item, and don't reuse removed slots.
diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
index b5bc051..7aa84a3 100644
--- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
+++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc
@@ -525,7 +525,7 @@
   if (!WTF::IsMainThread() || args.Length() < 1)
     return false;
   v8::Local<v8::Value> source = args[0];
-  if (!source->IsWebAssemblyCompiledModule())
+  if (!source->IsWasmModuleObject())
     return false;
 
   v8::CompiledWasmModule compiled_module =
diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/union.py b/third_party/blink/renderer/bindings/scripts/bind_gen/union.py
index d545e67..d115e59 100644
--- a/third_party/blink/renderer/bindings/scripts/bind_gen/union.py
+++ b/third_party/blink/renderer/bindings/scripts/bind_gen/union.py
@@ -7,6 +7,7 @@
 import web_idl
 
 from . import name_style
+from .blink_v8_bridge import blink_type_info
 from .code_node import ListNode
 from .code_node import TextNode
 from .code_node_cxx import CxxClassDefNode
@@ -14,6 +15,7 @@
 from .code_node_cxx import CxxNamespaceNode
 from .codegen_accumulator import CodeGenAccumulator
 from .codegen_context import CodeGenContext
+from .codegen_format import format_template as _format
 from .codegen_utils import component_export
 from .codegen_utils import enclose_with_header_guard
 from .codegen_utils import enclose_with_namespace
@@ -25,6 +27,22 @@
 from .path_manager import PathManager
 
 
+def _member_type_name(idl_type):
+    assert isinstance(idl_type, web_idl.IdlType)
+
+    class MemberTypeName(object):
+        def __init__(self, idl_type):
+            type_name = idl_type.type_name
+            self.old_is_api = name_style.func("Is", type_name)
+            self.old_get_api = name_style.func("GetAs", type_name)
+            self.old_set_api = name_style.func("Set", type_name)
+            # C++ data member that holds a union member.  The prefix "um"
+            # stands for "Union Member."
+            self.member_var = name_style.member_var("um", type_name)
+
+    return MemberTypeName(idl_type)
+
+
 def make_union_constructor_defs(cg_context):
     assert isinstance(cg_context, CodeGenContext)
 
@@ -52,6 +70,54 @@
     ])
 
 
+def make_union_member_type_enum(cg_context):
+    assert isinstance(cg_context, CodeGenContext)
+
+    T = TextNode
+    F = lambda *args, **kwargs: T(_format(*args, **kwargs))
+
+    union = cg_context.union
+    node = ListNode()
+    enum_members = ListNode(separator=", ")
+
+    node.extend([
+        T("enum class MemberType {"),
+        enum_members,
+        T("};"),
+        T("MemberType active_member_type_ = MemberType::kEmpty;"),
+    ])
+
+    enum_members.append(T("kEmpty"))
+    for idl_type in union.flattened_member_types:
+        enum_members.append(T(name_style.constant(idl_type.type_name)))
+    if union.does_include_nullable_type:
+        enum_members.append(T("kNull"))
+
+    return node
+
+
+def make_union_member_vars(cg_context):
+    assert isinstance(cg_context, CodeGenContext)
+
+    T = TextNode
+    F = lambda *args, **kwargs: T(_format(*args, **kwargs))
+
+    union = cg_context.union
+    node = ListNode()
+
+    node.append(
+        T("""\
+// C++ data members that hold union members.  The prefix "um" stands
+// for "Union Member."\
+"""))
+    for idl_type in union.flattened_member_types:
+        _1 = blink_type_info(idl_type).member_t
+        _2 = _member_type_name(idl_type).member_var
+        node.append(F("{_1} {_2};", _1=_1, _2=_2))
+
+    return node
+
+
 def make_union_class_def(cg_context):
     assert isinstance(cg_context, CodeGenContext)
 
@@ -72,6 +138,12 @@
             name="Trace", arg_decls=["Visitor*"], return_type="void"),
     ])
 
+    class_def.private_section.extend([
+        make_union_member_type_enum(cg_context),
+        T(""),
+        make_union_member_vars(cg_context),
+    ])
+
     return class_def
 
 
diff --git a/third_party/blink/renderer/controller/BUILD.gn b/third_party/blink/renderer/controller/BUILD.gn
index 4342631..5a2cd44 100644
--- a/third_party/blink/renderer/controller/BUILD.gn
+++ b/third_party/blink/renderer/controller/BUILD.gn
@@ -56,8 +56,6 @@
     sources += [
       "crash_memory_metrics_reporter_impl.cc",
       "crash_memory_metrics_reporter_impl.h",
-      "highest_pmf_reporter.cc",
-      "highest_pmf_reporter.h",
       "memory_usage_monitor_posix.cc",
       "memory_usage_monitor_posix.h",
       "oom_intervention_impl.cc",
@@ -82,6 +80,14 @@
       "Foundation.framework",
     ]
   }
+  # HighestPmfReporter depends on MemoryUsageMonitor and MemoryUsageMonitor
+  # depends on platform specific code. Explicitly specify supported platforms.
+  if (is_linux || is_win || is_android || is_mac) {
+    sources += [
+      "highest_pmf_reporter.cc",
+      "highest_pmf_reporter.h",
+    ]
+  }
 
   configs -= [ "//build/config/compiler:default_symbols" ]
   configs += blink_symbols_config
@@ -173,16 +179,15 @@
   }
   if (is_android) {
     sources += [
-      "highest_pmf_reporter_test.cc",
       "memory_usage_monitor_posix_test.cc",
-      "memory_usage_monitor_test.cc",
       "oom_intervention_impl_test.cc",
       "user_level_memory_pressure_signal_generator_test.cc",
     ]
   }
 
-  if (is_mac) {
+  if (is_linux || is_android || is_mac || is_win) {
     sources += [
+      "highest_pmf_reporter_test.cc",
       "memory_usage_monitor_test.cc",
     ]
   }
diff --git a/third_party/blink/renderer/controller/blink_initializer.cc b/third_party/blink/renderer/controller/blink_initializer.cc
index 29bf2e58..dd22afa 100644
--- a/third_party/blink/renderer/controller/blink_initializer.cc
+++ b/third_party/blink/renderer/controller/blink_initializer.cc
@@ -62,7 +62,6 @@
 
 #if defined(OS_ANDROID)
 #include "third_party/blink/renderer/controller/crash_memory_metrics_reporter_impl.h"
-#include "third_party/blink/renderer/controller/highest_pmf_reporter.h"
 #include "third_party/blink/renderer/controller/oom_intervention_impl.h"
 #include "third_party/blink/renderer/controller/user_level_memory_pressure_signal_generator.h"
 #endif
@@ -71,6 +70,11 @@
 #include "third_party/blink/renderer/controller/memory_usage_monitor_posix.h"
 #endif
 
+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX) || \
+    defined(OS_WIN)
+#include "third_party/blink/renderer/controller/highest_pmf_reporter.h"
+#endif
+
 namespace blink {
 
 namespace {
@@ -143,7 +147,10 @@
   // Initialize CrashMemoryMetricsReporterImpl in order to assure that memory
   // allocation does not happen in OnOOMCallback.
   CrashMemoryMetricsReporterImpl::Instance();
+#endif
 
+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX) || \
+    defined(OS_WIN)
   // Start reporting the highest private memory footprint after the first
   // navigation.
   HighestPmfReporter::Instance();
diff --git a/third_party/blink/renderer/core/accessibility/ax_object_cache.h b/third_party/blink/renderer/core/accessibility/ax_object_cache.h
index 750d20f..b3dbbda 100644
--- a/third_party/blink/renderer/core/accessibility/ax_object_cache.h
+++ b/third_party/blink/renderer/core/accessibility/ax_object_cache.h
@@ -42,7 +42,6 @@
 class HTMLOptionElement;
 class HTMLSelectElement;
 class IntPoint;
-class LayoutMenuList;
 class LayoutRect;
 class LineLayoutItem;
 class LocalFrameView;
@@ -102,10 +101,10 @@
   virtual void HandleTextMarkerDataAdded(Node* start, Node* end) = 0;
   virtual void HandleTextFormControlChanged(Node*) = 0;
   virtual void HandleValueChanged(Node*) = 0;
-  virtual void HandleUpdateActiveMenuOption(LayoutMenuList*,
+  virtual void HandleUpdateActiveMenuOption(LayoutObject*,
                                             int option_index) = 0;
-  virtual void DidShowMenuListPopup(LayoutMenuList*) = 0;
-  virtual void DidHideMenuListPopup(LayoutMenuList*) = 0;
+  virtual void DidShowMenuListPopup(LayoutObject*) = 0;
+  virtual void DidHideMenuListPopup(LayoutObject*) = 0;
   virtual void HandleLoadComplete(Document*) = 0;
   virtual void HandleLayoutComplete(Document*) = 0;
   virtual void HandleClicked(Node*) = 0;
diff --git a/third_party/blink/renderer/core/animation/animation.cc b/third_party/blink/renderer/core/animation/animation.cc
index 94d4347..b4f8dc9 100644
--- a/third_party/blink/renderer/core/animation/animation.cc
+++ b/third_party/blink/renderer/core/animation/animation.cc
@@ -39,6 +39,7 @@
 #include "third_party/blink/renderer/core/animation/animation_timeline.h"
 #include "third_party/blink/renderer/core/animation/css/css_animations.h"
 #include "third_party/blink/renderer/core/animation/document_timeline.h"
+#include "third_party/blink/renderer/core/animation/element_animations.h"
 #include "third_party/blink/renderer/core/animation/keyframe_effect.h"
 #include "third_party/blink/renderer/core/animation/pending_animations.h"
 #include "third_party/blink/renderer/core/animation/scroll_timeline.h"
@@ -186,6 +187,7 @@
       sequence_number_(NextSequenceNumber()),
       content_(content),
       timeline_(timeline),
+      replace_state_(kActive),
       is_paused_for_testing_(false),
       is_composited_animation_disabled_for_testing_(false),
       pending_pause_(false),
@@ -1310,18 +1312,25 @@
       finished_promise_ &&
       finished_promise_->GetState() == AnimationPromise::kPending;
 
-  return pending_finished_event_ || has_pending_promise ||
+  return pending_finished_event_ || pending_cancelled_event_ ||
+         pending_remove_event_ || has_pending_promise ||
          (!finished_ && HasEventListeners(event_type_names::kFinish));
 }
 
 void Animation::ContextDestroyed(ExecutionContext*) {
   finished_ = true;
   pending_finished_event_ = nullptr;
+  pending_cancelled_event_ = nullptr;
+  pending_remove_event_ = nullptr;
 }
 
 DispatchEventResult Animation::DispatchEventInternal(Event& event) {
   if (pending_finished_event_ == &event)
     pending_finished_event_ = nullptr;
+  if (pending_cancelled_event_ == &event)
+    pending_cancelled_event_ = nullptr;
+  if (pending_remove_event_ == &event)
+    pending_remove_event_ = nullptr;
   return EventTargetWithInlineData::DispatchEventInternal(event);
 }
 
@@ -1917,12 +1926,125 @@
   }
 }
 
+// -------------------------------------
+// Replacement of animations
+// -------------------------------------
+
+// https://drafts.csswg.org/web-animations-1/#removing-replaced-animations
+bool Animation::IsReplaceable() {
+  // An animation is replaceable if all of the following conditions are true:
+
+  // 1. The existence of the animation is not prescribed by markup. That is, it
+  //    is not a CSS animation with an owning element, nor a CSS transition with
+  //    an owning element.
+  if (IsCSSAnimation() || IsCSSTransition()) {
+    // TODO(crbug.com/981905): Add OwningElement method to Animation and
+    // override in CssAnimations and CssTransitions. Only bail here if the
+    // animation has an owning element.
+    return false;
+  }
+
+  // 2. The animation's play state is finished.
+  if (CalculateAnimationPlayState() != kFinished)
+    return false;
+
+  // 3. The animation's replace state is not removed.
+  if (replace_state_ == kRemoved)
+    return false;
+
+  // 4. The animation is associated with a monotonically increasing timeline.
+  if (!timeline_ || timeline_->IsScrollTimeline())
+    return false;
+
+  // 5. The animation has an associated effect.
+  if (!content_ || !content_->IsKeyframeEffect())
+    return false;
+
+  // 6. The animation's associated effect is in effect.
+  if (!content_->IsInEffect())
+    return false;
+
+  // 7. The animation's associated effect has an effect target.
+  Element* target = To<KeyframeEffect>(content_.Get())->target();
+  if (!target)
+    return false;
+
+  return true;
+}
+
+// https://drafts.csswg.org/web-animations-1/#removing-replaced-animations
+void Animation::RemoveReplacedAnimation() {
+  DCHECK(IsReplaceable());
+
+  // To remove a replaced animation, perform the following steps:
+  // 1. Set animation’s replace state to removed.
+  // 2. Create an AnimationPlaybackEvent, removeEvent.
+  // 3. Set removeEvent’s type attribute to remove.
+  // 4. Set removeEvent’s currentTime attribute to the current time of
+  //    animation.
+  // 5. Set removeEvent’s timelineTime attribute to the current time of the
+  //    timeline with which animation is associated.
+  //
+  // If animation has a document for timing, then append removeEvent to its
+  // document for timing's pending animation event queue along with its target,
+  // animation. For the scheduled event time, use the result of applying the
+  // procedure to convert timeline time to origin-relative time to the current
+  // time of the timeline with which animation is associated.
+  replace_state_ = kRemoved;
+  const AtomicString& event_type = event_type_names::kRemove;
+  if (GetExecutionContext() && HasEventListeners(event_type)) {
+    base::Optional<double> event_current_time = CurrentTimeInternal();
+    if (event_current_time)
+      event_current_time = SecondsToMilliseconds(event_current_time.value());
+    pending_remove_event_ = MakeGarbageCollected<AnimationPlaybackEvent>(
+        event_type, event_current_time, TimelineTime());
+    pending_remove_event_->SetTarget(this);
+    pending_remove_event_->SetCurrentTarget(this);
+    document_->EnqueueAnimationFrameEvent(pending_remove_event_);
+  }
+
+  // Force timing update to clear the effect.
+  if (content_)
+    content_->Invalidate();
+  Update(kTimingUpdateOnDemand);
+}
+
+void Animation::persist() {
+  if (replace_state_ == kPersisted)
+    return;
+
+  replace_state_ = kPersisted;
+
+  // Force timing update to reapply the effect.
+  if (content_)
+    content_->Invalidate();
+  Update(kTimingUpdateOnDemand);
+}
+
+String Animation::replaceState() {
+  switch (replace_state_) {
+    case kActive:
+      return "active";
+
+    case kRemoved:
+      return "removed";
+
+    case kPersisted:
+      return "persisted";
+
+    default:
+      NOTREACHED();
+      return "";
+  }
+}
+
 void Animation::Trace(blink::Visitor* visitor) {
   visitor->Trace(content_);
   visitor->Trace(document_);
   visitor->Trace(timeline_);
   visitor->Trace(pending_finished_event_);
   visitor->Trace(pending_cancelled_event_);
+  visitor->Trace(pending_remove_event_);
   visitor->Trace(finished_promise_);
   visitor->Trace(ready_promise_);
   visitor->Trace(compositor_animation_);
diff --git a/third_party/blink/renderer/core/animation/animation.h b/third_party/blink/renderer/core/animation/animation.h
index 0679cd1..2882224 100644
--- a/third_party/blink/renderer/core/animation/animation.h
+++ b/third_party/blink/renderer/core/animation/animation.h
@@ -82,6 +82,9 @@
     kFinished
   };
 
+  // https://drafts.csswg.org/web-animations/#animation-replace-state
+  enum ReplaceState { kActive, kRemoved, kPersisted };
+
   // Priority for sorting getAnimation by Animation class, arranged from lowest
   // priority to highest priority as per spec:
   // https://drafts.csswg.org/web-animations/#dom-document-getanimations
@@ -249,6 +252,16 @@
 
   bool CompositorPendingForTesting() const { return compositor_pending_; }
 
+  // Methods for handling removal and persistence of animations.
+  bool IsReplaceable();
+  void RemoveReplacedAnimation();
+  void persist();
+  String replaceState();
+  bool ReplaceStateRemoved() const override {
+    return replace_state_ == kRemoved;
+  }
+  bool ReplaceStateActive() const { return replace_state_ == kActive; }
+
  protected:
   DispatchEventResult DispatchEventInternal(Event&) override;
   void AddedEventListener(const AtomicString& event_type,
@@ -348,6 +361,8 @@
   Member<Document> document_;
   Member<AnimationTimeline> timeline_;
 
+  ReplaceState replace_state_;
+
   // Testing flags.
   bool is_paused_for_testing_;
   bool is_composited_animation_disabled_for_testing_;
@@ -372,6 +387,8 @@
 
   Member<Event> pending_cancelled_event_;
 
+  Member<Event> pending_remove_event_;
+
   // TODO(crbug.com/960944): Consider reintroducing kPause and cleanup use of
   // mutually exclusive pending_play_ and pending_pause_ flags.
   enum CompositorAction { kNone, kStart };
diff --git a/third_party/blink/renderer/core/animation/animation.idl b/third_party/blink/renderer/core/animation/animation.idl
index bb359722..0f4af49e 100644
--- a/third_party/blink/renderer/core/animation/animation.idl
+++ b/third_party/blink/renderer/core/animation/animation.idl
@@ -32,6 +32,8 @@
 
 enum AnimationPlayState { "idle", "pending", "running", "paused", "finished" };
 
+enum ReplaceState { "active", "removed", "persisted" };
+
 [
     Exposed=Window,
     ActiveScriptWrappable
@@ -44,16 +46,18 @@
     [Measure, RaisesException=Setter] attribute double?    currentTime;
     [Measure, RaisesException=Setter] attribute double     playbackRate;
     [Measure] readonly attribute AnimationPlayState playState;
+    [RuntimeEnabled=WebAnimationsAPI, Measure] readonly attribute ReplaceState replaceState;
     [Measure] readonly attribute boolean pending;
     [Measure, RaisesException] void finish();
     [Measure, RaisesException] void play();
     [Measure, RaisesException] void pause();
     [Measure, RaisesException] void reverse();
     [Measure, RaisesException] void updatePlaybackRate(double playback_rate);
+    [RuntimeEnabled=WebAnimationsAPI, Measure] void persist();
     [Measure] attribute DOMString id;
     [Measure] void cancel();
     [Measure] attribute EventHandler onfinish;
     [Measure] attribute EventHandler oncancel;
     [RuntimeEnabled=WebAnimationsAPI, CallWith=ScriptState] readonly attribute Promise<Animation> finished;
     [RuntimeEnabled=WebAnimationsAPI, CallWith=ScriptState] readonly attribute Promise<Animation> ready;
-};
\ No newline at end of file
+};
diff --git a/third_party/blink/renderer/core/animation/animation_effect_owner.h b/third_party/blink/renderer/core/animation/animation_effect_owner.h
index aa99a2d..5c6cc9d 100644
--- a/third_party/blink/renderer/core/animation/animation_effect_owner.h
+++ b/third_party/blink/renderer/core/animation/animation_effect_owner.h
@@ -34,6 +34,9 @@
   // to be updated or not.
   virtual bool EffectSuppressed() const = 0;
 
+  // Returns true if this is a replaced animation that has been removed.
+  virtual bool ReplaceStateRemoved() const = 0;
+
   // Notifies the owning animation that the effect has been invalidated, and any
   // cached information regarding it may need to be invalidated. This can
   // happen e.g. if the timing information changes or the keyframes change.
diff --git a/third_party/blink/renderer/core/animation/animation_effect_test.cc b/third_party/blink/renderer/core/animation/animation_effect_test.cc
index c22f553..56303047e 100644
--- a/third_party/blink/renderer/core/animation/animation_effect_test.cc
+++ b/third_party/blink/renderer/core/animation/animation_effect_test.cc
@@ -49,6 +49,7 @@
   MOCK_CONST_METHOD0(Playing, bool());
   MOCK_CONST_METHOD0(IsEventDispatchAllowed, bool());
   MOCK_CONST_METHOD0(EffectSuppressed, bool());
+  MOCK_CONST_METHOD0(ReplaceStateRemoved, bool());
   MOCK_METHOD0(EffectInvalidated, void());
   MOCK_METHOD0(UpdateIfNecessary, void());
   MOCK_METHOD0(GetAnimation, Animation*());
diff --git a/third_party/blink/renderer/core/animation/animation_timeline.cc b/third_party/blink/renderer/core/animation/animation_timeline.cc
index d73d5840..95a08a6 100644
--- a/third_party/blink/renderer/core/animation/animation_timeline.cc
+++ b/third_party/blink/renderer/core/animation/animation_timeline.cc
@@ -4,6 +4,7 @@
 
 #include "third_party/blink/renderer/core/animation/animation_timeline.h"
 #include "third_party/blink/renderer/core/animation/document_animations.h"
+#include "third_party/blink/renderer/core/animation/keyframe_effect.h"
 #include "third_party/blink/renderer/core/dom/document.h"
 #include "third_party/blink/renderer/core/dom/element.h"
 #include "third_party/blink/renderer/core/frame/local_frame_view.h"
@@ -99,6 +100,88 @@
   // Explicitly free the backing store to avoid memory regressions.
   // TODO(bikineev): Revisit when young generation is done.
   animations.clear();
+
+  if (RuntimeEnabledFeatures::WebAnimationsAPIEnabled() &&
+      reason == kTimingUpdateForAnimationFrame) {
+    RemoveReplacedAnimations();
+  }
+}
+
+// https://drafts.csswg.org/web-animations-1/#removing-replaced-animations
+void AnimationTimeline::RemoveReplacedAnimations() {
+  // Group replaceable animations by target element.
+  HeapHashMap<Member<Element>, Member<HeapVector<Member<Animation>>>>
+      replaceable_animations;
+  for (Animation* animation : animations_) {
+    // Initial conditions for removal:
+    // * has an associated animation effect whose effect target is a descendant
+    //    of doc, and
+    // * is replaceable
+    if (!animation->IsReplaceable())
+      continue;
+    DCHECK(animation->effect());
+    Element* target = To<KeyframeEffect>(animation->effect())->target();
+    DCHECK(target);
+    if (target->GetDocument() != animation->GetDocument())
+      continue;
+
+    auto inserted = replaceable_animations.insert(target, nullptr);
+    if (inserted.is_new_entry) {
+      inserted.stored_value->value =
+          MakeGarbageCollected<HeapVector<Member<Animation>>>();
+    }
+    inserted.stored_value->value->push_back(animation);
+  }
+
+  HeapVector<Member<Animation>> animations_to_remove;
+  for (auto& elem_it : replaceable_animations) {
+    HeapVector<Member<Animation>>* animations = elem_it.value;
+
+    // Only elements with multiple animations in the replaceable state need to
+    // be checked.
+    if (animations->size() == 1)
+      continue;
+
+    // By processing in decreasing order by priority, we can perform a single
+    // pass for discovery of replaced properties.
+    std::sort(animations->begin(), animations->end(),
+              Animation::HasLowerCompositeOrdering);
+    PropertyHandleSet replaced_properties;
+    for (auto anim_it = animations->rbegin(); anim_it != animations->rend();
+         anim_it++) {
+      // Remaining conditions for removal:
+      // * has a replace state of active,  and
+      // * for which there exists for each target property of every animation
+      //   effect associated with animation, an animation effect associated with
+      //   a replaceable animation with a higher composite order than animation
+      //   that includes the same target property.
+
+      // Only active animations can be removed. We still need to go through
+      // the process of iterating over properties if not removable to update
+      // the set of properties being replaced.
+      bool replace = (*anim_it)->ReplaceStateActive();
+      PropertyHandleSet animation_properties =
+          To<KeyframeEffect>((*anim_it)->effect())->Model()->Properties();
+      for (const auto& property : animation_properties) {
+        auto inserted = replaced_properties.insert(property);
+        if (inserted.is_new_entry) {
+          // Top-most compositor order animation affecting this property.
+          replace = false;
+        }
+      }
+      if (replace)
+        animations_to_remove.push_back(*anim_it);
+    }
+  }
+
+  // The list of animations for removal is constructed in reverse composite
+  // ordering for efficiency. Flip the ordering to ensure that events are
+  // dispatched in composite order.
+  // TODO(crbug.com/981905): Add test for ordering once onremove is implemented.
+  for (auto it = animations_to_remove.rbegin();
+       it != animations_to_remove.rend(); it++) {
+    (*it)->RemoveReplacedAnimation();
+  }
 }
 
 void AnimationTimeline::SetOutdatedAnimation(Animation* animation) {
diff --git a/third_party/blink/renderer/core/animation/animation_timeline.h b/third_party/blink/renderer/core/animation/animation_timeline.h
index 685da90c..a2d6bb3 100644
--- a/third_party/blink/renderer/core/animation/animation_timeline.h
+++ b/third_party/blink/renderer/core/animation/animation_timeline.h
@@ -68,6 +68,7 @@
 
  protected:
   virtual base::Optional<base::TimeDelta> CurrentTimeInternal() = 0;
+  void RemoveReplacedAnimations();
 
   Member<Document> document_;
   unsigned outdated_animation_count_;
diff --git a/third_party/blink/renderer/core/animation/document_animations.cc b/third_party/blink/renderer/core/animation/document_animations.cc
index 8f3ec25..d9020e9 100644
--- a/third_party/blink/renderer/core/animation/document_animations.cc
+++ b/third_party/blink/renderer/core/animation/document_animations.cc
@@ -125,6 +125,8 @@
   HeapVector<Member<Animation>> animations;
   for (auto& timeline : timelines_) {
     for (const auto& animation : timeline->GetAnimations()) {
+      if (animation->ReplaceStateRemoved())
+        continue;
       if (!animation->effect() || (!animation->effect()->IsCurrent() &&
                                    !animation->effect()->IsInEffect())) {
         continue;
diff --git a/third_party/blink/renderer/core/animation/keyframe_effect.cc b/third_party/blink/renderer/core/animation/keyframe_effect.cc
index 397f6e74..d297f60 100644
--- a/third_party/blink/renderer/core/animation/keyframe_effect.cc
+++ b/third_party/blink/renderer/core/animation/keyframe_effect.cc
@@ -525,7 +525,8 @@
   if (!model_->HasFrames())
     return;
   DCHECK(owner_);
-  if (IsInEffect() && !owner_->EffectSuppressed())
+  if (IsInEffect() && !owner_->EffectSuppressed() &&
+      !owner_->ReplaceStateRemoved())
     const_cast<KeyframeEffect*>(this)->ApplyEffects();
   else
     const_cast<KeyframeEffect*>(this)->ClearEffects();
diff --git a/third_party/blink/renderer/core/css/mathml.css b/third_party/blink/renderer/core/css/mathml.css
index 878d91f..baaeadc 100644
--- a/third_party/blink/renderer/core/css/mathml.css
+++ b/third_party/blink/renderer/core/css/mathml.css
@@ -46,7 +46,7 @@
     outline: auto 1px -webkit-focus-ring-color;
 }
 
-maction, merror, mphantom, mrow, mstyle
+maction, merror, mphantom, mrow, mspace, mstyle
 {
     display: math;
 }
@@ -59,3 +59,7 @@
     color: red;
     background-color: lightYellow;
 }
+
+mspace {
+    overflow: hidden !important;
+}
diff --git a/third_party/blink/renderer/core/events/event_type_names.json5 b/third_party/blink/renderer/core/events/event_type_names.json5
index dbbd48b..2e5e1ba 100644
--- a/third_party/blink/renderer/core/events/event_type_names.json5
+++ b/third_party/blink/renderer/core/events/event_type_names.json5
@@ -231,6 +231,7 @@
     "readystatechange",
     "rejectionhandled",
     "release",
+    "remove",
     "removesourcebuffer",
     "removestream",
     "removetrack",
diff --git a/third_party/blink/renderer/core/html/forms/html_select_element.cc b/third_party/blink/renderer/core/html/forms/html_select_element.cc
index ed3f037..45137d13 100644
--- a/third_party/blink/renderer/core/html/forms/html_select_element.cc
+++ b/third_party/blink/renderer/core/html/forms/html_select_element.cc
@@ -2017,7 +2017,7 @@
   UnobserveTreeMutation();
   if (AXObjectCache* cache = GetDocument().ExistingAXObjectCache()) {
     if (GetLayoutObject() && GetLayoutObject()->IsMenuList())
-      cache->DidHideMenuListPopup(ToLayoutMenuList(GetLayoutObject()));
+      cache->DidHideMenuListPopup(GetLayoutObject());
   }
 }
 
@@ -2090,10 +2090,9 @@
   popup_is_visible_ = true;
   ObserveTreeMutation();
 
-  LayoutMenuList* menu_list = ToLayoutMenuList(GetLayoutObject());
   popup_->Show();
   if (AXObjectCache* cache = GetDocument().ExistingAXObjectCache())
-    cache->DidShowMenuListPopup(menu_list);
+    cache->DidShowMenuListPopup(GetLayoutObject());
 }
 
 void HTMLSelectElement::HidePopup() {
diff --git a/third_party/blink/renderer/core/layout/BUILD.gn b/third_party/blink/renderer/core/layout/BUILD.gn
index b01e7be4..9cf8d72 100644
--- a/third_party/blink/renderer/core/layout/BUILD.gn
+++ b/third_party/blink/renderer/core/layout/BUILD.gn
@@ -421,6 +421,8 @@
     "ng/mathml/ng_math_layout_utils.h",
     "ng/mathml/ng_math_row_layout_algorithm.cc",
     "ng/mathml/ng_math_row_layout_algorithm.h",
+    "ng/mathml/ng_math_space_layout_algorithm.cc",
+    "ng/mathml/ng_math_space_layout_algorithm.h",
     "ng/ng_absolute_utils.cc",
     "ng/ng_absolute_utils.h",
     "ng/ng_block_break_token.cc",
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc
index 812cded..619fe3b6 100644
--- a/third_party/blink/renderer/core/layout/layout_box.cc
+++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -2418,9 +2418,6 @@
     NGLayoutCacheStatus* out_cache_status) {
   *out_cache_status = NGLayoutCacheStatus::kNeedsLayout;
 
-  if (!RuntimeEnabledFeatures::LayoutNGFragmentCachingEnabled())
-    return nullptr;
-
   const NGLayoutResult* cached_layout_result = GetCachedLayoutResult();
   if (!cached_layout_result)
     return nullptr;
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc
index 525bb98..21a2bcf 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.cc
@@ -46,6 +46,7 @@
       line_({&line, item_count}),
       rect_({PhysicalOffset(), line.Size()}),
       type_(kLine),
+      sub_type_(static_cast<unsigned>(line.LineBoxType())),
       style_variant_(static_cast<unsigned>(line.StyleVariant())),
       is_hidden_for_paint_(false),
       text_direction_(static_cast<unsigned>(line.BaseDirection())),
@@ -121,8 +122,7 @@
 }
 
 bool NGFragmentItem::IsEmptyLineBox() const {
-  // TODO(yosin): Implement |NGFragmentItem::IsEmptyLineBox()|.
-  return false;
+  return LineBoxType() == NGLineBoxType::kEmptyLineBox;
 }
 
 bool NGFragmentItem::IsGeneratedText() const {
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h
index 88244b2..2a3c01a 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_fragment_item.h
@@ -164,6 +164,14 @@
     return nullptr;
   }
 
+  using NGLineBoxType = NGPhysicalLineBoxFragment::NGLineBoxType;
+  NGLineBoxType LineBoxType() const {
+    if (Type() == kLine)
+      return static_cast<NGLineBoxType>(sub_type_);
+    NOTREACHED() << this;
+    return NGLineBoxType::kNormalLineBox;
+  }
+
   // DisplayItemClient overrides
   String DebugName() const override;
   IntRect VisualRect() const override;
@@ -374,7 +382,7 @@
 
   // Note: We should not add |bidi_level_| because it is used only for layout.
   unsigned type_ : 2;           // ItemType
-  unsigned sub_type_ : 3;       // NGTextType
+  unsigned sub_type_ : 3;       // NGTextType or NGLineBoxType
   unsigned style_variant_ : 2;  // NGStyleVariant
   // TODO(yosin): We'll remove |is_generated_text_| field when we construct
   // |NGFragmentItem| without |NGPhysicalTextFragment| because usage of this
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.cc
index 8218594..7d1a64e2 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor.cc
@@ -111,11 +111,11 @@
     return layout_object->RootInlineFormattingContext();
   }
   if (IsItemCursor()) {
-    for (const auto& item : items_) {
-      const LayoutObject* layout_object = item->GetLayoutObject();
-      if (layout_object && layout_object->IsInline())
-        return layout_object->RootInlineFormattingContext();
-    }
+    const NGFragmentItem& item = *fragment_items_->Items().front();
+    const LayoutObject* layout_object = item.GetLayoutObject();
+    if (item.Type() == NGFragmentItem::kLine)
+      return To<LayoutBlockFlow>(layout_object);
+    return layout_object->RootInlineFormattingContext();
   }
   NOTREACHED();
   return nullptr;
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor_test.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor_test.cc
index d917ed4b..93910dd5 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor_test.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_cursor_test.cc
@@ -383,6 +383,16 @@
   EXPECT_EQ("#last", ToDebugString(last_logical_leaf));
 }
 
+TEST_P(NGInlineCursorTest, IsEmptyLineBox) {
+  InsertStyleElement("b { margin-bottom: 1px; }");
+  NGInlineCursor cursor = SetupCursor("<div id=root>abc<br><b></b></div>");
+
+  EXPECT_FALSE(cursor.IsEmptyLineBox()) << "'abc\\n' is in non-empty line box.";
+  cursor.MoveToNextLine();
+  EXPECT_TRUE(cursor.IsEmptyLineBox())
+      << "<b></b> with margin produces empty line box.";
+}
+
 TEST_P(NGInlineCursorTest, LastChild) {
   // TDOO(yosin): Remove <style> once NGFragmentItem don't do culled inline.
   InsertStyleElement("a, b { background: gray; }");
@@ -452,6 +462,7 @@
   Vector<String> list = ToDebugStringList(cursor);
   EXPECT_THAT(list,
               ElementsAre("LayoutNGListMarker ::marker", "#linebox", "abc"));
+  EXPECT_EQ(GetLayoutObjectByElementId("root"), cursor.GetLayoutBlockFlow());
 }
 
 TEST_P(NGInlineCursorTest, NextWithSoftHyphens) {
@@ -592,6 +603,10 @@
       SetupCursor("<div id=root>abc<b id=ib>def</b>xyz</div>");
   Vector<String> list = ToDebugStringList(cursor);
   EXPECT_THAT(list, ElementsAre("#linebox", "abc", "#ib", "xyz"));
+
+  NGInlineCursor cursor2;
+  cursor2.MoveTo(*GetElementById("ib")->firstChild()->GetLayoutObject());
+  EXPECT_EQ(GetLayoutObjectByElementId("ib"), cursor2.GetLayoutBlockFlow());
 }
 
 TEST_P(NGInlineCursorTest, NextForSameLayoutObject) {
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm_test.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm_test.cc
index 3c1aa36..0f6d2ad 100644
--- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm_test.cc
+++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_layout_algorithm_test.cc
@@ -257,8 +257,8 @@
   auto* block_flow =
       To<LayoutBlockFlow>(GetLayoutObjectByElementId("container"));
   NGBlockNode block_node(block_flow);
-  NGConstraintSpace space = NGConstraintSpace::CreateFromLayoutObject(
-      *block_flow, false /* is_layout_root */);
+  NGConstraintSpace space =
+      NGConstraintSpace::CreateFromLayoutObject(*block_flow);
   scoped_refptr<const NGLayoutResult> layout_result = block_node.Layout(space);
 
   EXPECT_TRUE(layout_result->BfcBlockOffset().has_value());
@@ -291,8 +291,8 @@
       To<LayoutBlockFlow>(GetLayoutObjectByElementId("container"));
   NGInlineNode inline_node(block_flow);
   NGInlineChildLayoutContext context;
-  NGConstraintSpace space = NGConstraintSpace::CreateFromLayoutObject(
-      *block_flow, false /* is_layout_root */);
+  NGConstraintSpace space =
+      NGConstraintSpace::CreateFromLayoutObject(*block_flow);
   scoped_refptr<const NGLayoutResult> layout_result =
       inline_node.Layout(space, nullptr, &context);
 
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow_mixin.cc b/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow_mixin.cc
index f3fe0678..2c76381 100644
--- a/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow_mixin.cc
+++ b/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow_mixin.cc
@@ -223,7 +223,7 @@
     const PhysicalOffset& accumulated_offset,
     HitTestAction action) {
   if (const NGPaintFragment* paint_fragment = PaintFragment()) {
-    if (!this->IsEffectiveRootScroller()) {
+    if (!Base::IsEffectiveRootScroller()) {
       // Check if we need to do anything at all.
       // If we have clipping, then we can't have any spillout.
       PhysicalRect overflow_box = Base::HasOverflowClip()
@@ -311,26 +311,16 @@
   LayoutAnalyzer::BlockScope analyzer(*this);
 
   if (Base::IsOutOfFlowPositioned()) {
-    this->UpdateOutOfFlowBlockLayout();
+    LayoutNGMixin<Base>::UpdateOutOfFlowBlockLayout();
     return;
   }
 
-  NGConstraintSpace constraint_space =
-      NGConstraintSpace::CreateFromLayoutObject(
-          *this, !Base::View()->GetLayoutState()->Next() /* is_layout_root */);
-
-  scoped_refptr<const NGLayoutResult> result =
-      NGBlockNode(this).Layout(constraint_space);
-
-  for (const auto& descendant :
-       result->PhysicalFragment().OutOfFlowPositionedDescendants())
-    descendant.node.UseLegacyOutOfFlowPositioning();
-  this->UpdateMargins(constraint_space);
+  LayoutNGMixin<Base>::UpdateInFlowBlockLayout();
+  UpdateMargins();
 }
 
 template <typename Base>
-void LayoutNGBlockFlowMixin<Base>::UpdateMargins(
-    const NGConstraintSpace& space) {
+void LayoutNGBlockFlowMixin<Base>::UpdateMargins() {
   const LayoutBlock* containing_block = Base::ContainingBlock();
   if (!containing_block || !containing_block->IsLayoutBlockFlow())
     return;
@@ -343,13 +333,13 @@
   const ComputedStyle& cb_style = containing_block->StyleRef();
   const auto writing_mode = cb_style.GetWritingMode();
   const auto direction = cb_style.Direction();
-  LayoutUnit percentage_resolution_size =
-      space.PercentageResolutionInlineSizeForParentWritingMode();
-  NGBoxStrut margins = ComputePhysicalMargins(style, percentage_resolution_size)
+  LayoutUnit available_logical_width =
+      LayoutBoxUtils::AvailableLogicalWidth(*this, containing_block);
+  NGBoxStrut margins = ComputePhysicalMargins(style, available_logical_width)
                            .ConvertToLogical(writing_mode, direction);
-  ResolveInlineMargins(style, cb_style, space.AvailableSize().inline_size,
+  ResolveInlineMargins(style, cb_style, available_logical_width,
                        Base::LogicalWidth(), &margins);
-  this->SetMargin(margins.ConvertToPhysical(writing_mode, direction));
+  Base::SetMargin(margins.ConvertToPhysical(writing_mode, direction));
 }
 
 template class CORE_TEMPLATE_EXPORT LayoutNGBlockFlowMixin<LayoutBlockFlow>;
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow_mixin.h b/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow_mixin.h
index d2ed9230..8af64dcb 100644
--- a/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow_mixin.h
+++ b/third_party/blink/renderer/core/layout/ng/layout_ng_block_flow_mixin.h
@@ -89,7 +89,7 @@
 
  private:
   void AddScrollingOverflowFromChildren();
-  void UpdateMargins(const NGConstraintSpace& space);
+  void UpdateMargins();
 };
 
 // If you edit these export templates, also update templates in
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_flexible_box.cc b/third_party/blink/renderer/core/layout/ng/layout_ng_flexible_box.cc
index d4a96aa..a74fdfe 100644
--- a/third_party/blink/renderer/core/layout/ng/layout_ng_flexible_box.cc
+++ b/third_party/blink/renderer/core/layout/ng/layout_ng_flexible_box.cc
@@ -40,16 +40,7 @@
     return;
   }
 
-  NGConstraintSpace constraint_space =
-      NGConstraintSpace::CreateFromLayoutObject(
-          *this, !View()->GetLayoutState()->Next() /* is_layout_root */);
-
-  scoped_refptr<const NGLayoutResult> result =
-      NGBlockNode(this).Layout(constraint_space);
-
-  for (const auto& descendant :
-       result->PhysicalFragment().OutOfFlowPositionedDescendants())
-    descendant.node.UseLegacyOutOfFlowPositioning();
+  UpdateInFlowBlockLayout();
 }
 
 namespace {
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc b/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc
index 66240b05..8e7adef 100644
--- a/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc
+++ b/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc
@@ -108,8 +108,7 @@
                                                 : Base::ContainingBlock();
   const ComputedStyle* container_style = container->Style();
   NGConstraintSpace constraint_space =
-      NGConstraintSpace::CreateFromLayoutObject(*this,
-                                                false /* is_layout_root */);
+      NGConstraintSpace::CreateFromLayoutObject(*this);
 
   // As this is part of the Legacy->NG bridge, the container_builder is used
   // for indicating the resolved size of the OOF-positioned containing-block
@@ -219,6 +218,29 @@
   Base::SetIsLegacyInitiatedOutOfFlowLayout(true);
 }
 
+template <typename Base>
+scoped_refptr<const NGLayoutResult>
+LayoutNGMixin<Base>::UpdateInFlowBlockLayout() {
+  const auto* previous_result = Base::GetCachedLayoutResult();
+  bool is_layout_root = !Base::View()->GetLayoutState()->Next();
+
+  // If we are a layout root, use the previous space if available. This will
+  // include any stretched sizes if applicable.
+  NGConstraintSpace constraint_space =
+      is_layout_root && previous_result
+          ? previous_result->GetConstraintSpaceForCaching()
+          : NGConstraintSpace::CreateFromLayoutObject(*this);
+
+  scoped_refptr<const NGLayoutResult> result =
+      NGBlockNode(this).Layout(constraint_space);
+
+  for (const auto& descendant :
+       result->PhysicalFragment().OutOfFlowPositionedDescendants())
+    descendant.node.UseLegacyOutOfFlowPositioning();
+
+  return result;
+}
+
 template class CORE_TEMPLATE_EXPORT LayoutNGMixin<LayoutBlock>;
 template class CORE_TEMPLATE_EXPORT LayoutNGMixin<LayoutBlockFlow>;
 template class CORE_TEMPLATE_EXPORT LayoutNGMixin<LayoutProgress>;
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.h b/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.h
index 9b673d6c..d3537f9c 100644
--- a/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.h
+++ b/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.h
@@ -37,6 +37,7 @@
       LayoutUnit& max_logical_width) const override;
 
   void UpdateOutOfFlowBlockLayout();
+  scoped_refptr<const NGLayoutResult> UpdateInFlowBlockLayout();
 };
 
 extern template class CORE_EXTERN_TEMPLATE_EXPORT LayoutNGMixin<LayoutBlock>;
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_table_caption.cc b/third_party/blink/renderer/core/layout/ng/layout_ng_table_caption.cc
index 5d5418d2..2a611c31 100644
--- a/third_party/blink/renderer/core/layout/ng/layout_ng_table_caption.cc
+++ b/third_party/blink/renderer/core/layout/ng/layout_ng_table_caption.cc
@@ -57,23 +57,9 @@
 
   DCHECK(!IsOutOfFlowPositioned()) << "Out of flow captions are blockified.";
 
-  NGConstraintSpace constraint_space =
-      NGConstraintSpace::CreateFromLayoutObject(
-          *this, !View()->GetLayoutState()->Next() /* is_layout_root */);
-
-  scoped_refptr<const NGLayoutResult> result =
-      NGBlockNode(this).Layout(constraint_space);
-
-  CalculateAndSetMargins(constraint_space, result->PhysicalFragment());
-
-  // Tell legacy layout there were abspos descendents we couldn't place. We know
-  // we have to pass up to legacy here because this method is legacy's entry
-  // point to LayoutNG. If our parent were LayoutNG, it wouldn't have called
-  // UpdateBlockLayout, it would have packaged this LayoutObject into
-  // NGBlockNode and called Layout on that.
-  for (const auto& descendant :
-       result->PhysicalFragment().OutOfFlowPositionedDescendants())
-    descendant.node.UseLegacyOutOfFlowPositioning();
+  scoped_refptr<const NGLayoutResult> result = UpdateInFlowBlockLayout();
+  CalculateAndSetMargins(result->GetConstraintSpaceForCaching(),
+                         result->PhysicalFragment());
 
   // The parent table sometimes changes the caption's position after laying it
   // out. So there's no point in setting the fragment's offset here;
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_table_cell.cc b/third_party/blink/renderer/core/layout/ng/layout_ng_table_cell.cc
index da93f774..87eec6df 100644
--- a/third_party/blink/renderer/core/layout/ng/layout_ng_table_cell.cc
+++ b/third_party/blink/renderer/core/layout/ng/layout_ng_table_cell.cc
@@ -22,17 +22,7 @@
   LayoutAnalyzer::BlockScope analyzer(*this);
 
   SetOverrideLogicalWidth(LogicalWidth());
-
-  NGConstraintSpace constraint_space =
-      NGConstraintSpace::CreateFromLayoutObject(
-          *this, !View()->GetLayoutState()->Next() /* is_layout_root */);
-
-  scoped_refptr<const NGLayoutResult> result =
-      NGBlockNode(this).Layout(constraint_space);
-
-  for (const auto& descendant :
-       result->PhysicalFragment().OutOfFlowPositionedDescendants())
-    descendant.node.UseLegacyOutOfFlowPositioning();
+  UpdateInFlowBlockLayout();
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.cc b/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.cc
index 71170c08..29467b5 100644
--- a/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.cc
+++ b/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.cc
@@ -27,16 +27,7 @@
     return;
   }
 
-  NGConstraintSpace constraint_space =
-      NGConstraintSpace::CreateFromLayoutObject(
-          *this, !View()->GetLayoutState()->Next() /* is_layout_root */);
-
-  scoped_refptr<const NGLayoutResult> result =
-      NGBlockNode(this).Layout(constraint_space);
-
-  for (const auto& descendant :
-       result->PhysicalFragment().OutOfFlowPositionedDescendants())
-    descendant.node.UseLegacyOutOfFlowPositioning();
+  UpdateInFlowBlockLayout();
 }
 
 bool LayoutNGMathMLBlock::IsOfType(LayoutObjectType type) const {
@@ -51,4 +42,10 @@
   return child->GetNode() && child->GetNode()->IsMathMLElement();
 }
 
+bool LayoutNGMathMLBlock::CanHaveChildren() const {
+  if (GetNode() && GetNode()->HasTagName(mathml_names::kMspaceTag))
+    return false;
+  return LayoutNGMixin<LayoutBlock>::CanHaveChildren();
+}
+
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.h b/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.h
index 6a2247d..bc9dc975 100644
--- a/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.h
+++ b/third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.h
@@ -21,6 +21,7 @@
 
   bool IsOfType(LayoutObjectType) const final;
   bool IsChildAllowed(LayoutObject*, const ComputedStyle&) const final;
+  bool CanHaveChildren() const final;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.cc b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.cc
new file mode 100644
index 0000000..a68049a
--- /dev/null
+++ b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.cc
@@ -0,0 +1,43 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.h"
+
+#include "third_party/blink/renderer/core/layout/ng/ng_block_break_token.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_length_utils.h"
+
+namespace blink {
+
+NGMathSpaceLayoutAlgorithm::NGMathSpaceLayoutAlgorithm(
+    const NGLayoutAlgorithmParams& params)
+    : NGLayoutAlgorithm(params),
+      border_padding_(params.fragment_geometry.border +
+                      params.fragment_geometry.padding) {
+  DCHECK(params.fragment_geometry.scrollbar.IsEmpty());
+  container_builder_.SetIsNewFormattingContext(true);
+  container_builder_.SetInitialFragmentGeometry(params.fragment_geometry);
+}
+
+scoped_refptr<const NGLayoutResult> NGMathSpaceLayoutAlgorithm::Layout() {
+  DCHECK(!BreakToken());
+
+  LayoutUnit block_size = ComputeBlockSizeForFragment(
+      ConstraintSpace(), Style(), border_padding_, border_padding_.BlockSum());
+
+  container_builder_.SetIntrinsicBlockSize(border_padding_.BlockSum());
+  container_builder_.SetBlockSize(block_size);
+
+  container_builder_.SetBaseline(
+      border_padding_.block_start +
+      ValueForLength(Style().GetVerticalAlignLength(), LayoutUnit()));
+  return container_builder_.ToBoxFragment();
+}
+
+base::Optional<MinMaxSize> NGMathSpaceLayoutAlgorithm::ComputeMinMaxSize(
+    const MinMaxSizeInput& input) const {
+  return CalculateMinMaxSizesIgnoringChildren(Node(), border_padding_,
+                                              input.size_type);
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.h b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.h
new file mode 100644
index 0000000..ddfdfea1
--- /dev/null
+++ b/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.h
@@ -0,0 +1,31 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_NG_MATH_SPACE_LAYOUT_ALGORITHM_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_NG_MATH_SPACE_LAYOUT_ALGORITHM_H_
+
+#include "third_party/blink/renderer/core/layout/ng/ng_box_fragment_builder.h"
+#include "third_party/blink/renderer/core/layout/ng/ng_layout_algorithm.h"
+
+namespace blink {
+
+class CORE_EXPORT NGMathSpaceLayoutAlgorithm
+    : public NGLayoutAlgorithm<NGBlockNode,
+                               NGBoxFragmentBuilder,
+                               NGBlockBreakToken> {
+ public:
+  NGMathSpaceLayoutAlgorithm(const NGLayoutAlgorithmParams& params);
+
+ private:
+  scoped_refptr<const NGLayoutResult> Layout() final;
+
+  base::Optional<MinMaxSize> ComputeMinMaxSize(
+      const MinMaxSizeInput&) const final;
+
+  const NGBoxStrut border_padding_;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_NG_MATH_SPACE_LAYOUT_ALGORITHM_H_
diff --git a/third_party/blink/renderer/core/layout/ng/ng_base_layout_algorithm_test.cc b/third_party/blink/renderer/core/layout/ng/ng_base_layout_algorithm_test.cc
index 7f919d2..70b1057d 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_base_layout_algorithm_test.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_base_layout_algorithm_test.cc
@@ -49,8 +49,8 @@
 NGBaseLayoutAlgorithmTest::RunBlockLayoutAlgorithmForElement(Element* element) {
   auto* block_flow = To<LayoutBlockFlow>(element->GetLayoutObject());
   NGBlockNode node(block_flow);
-  NGConstraintSpace space = NGConstraintSpace::CreateFromLayoutObject(
-      *block_flow, false /* is_layout_root */);
+  NGConstraintSpace space =
+      NGConstraintSpace::CreateFromLayoutObject(*block_flow);
   NGFragmentGeometry fragment_geometry =
       CalculateInitialFragmentGeometry(space, node);
 
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm_test.cc b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm_test.cc
index 8f65feb..f8927fe 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm_test.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm_test.cc
@@ -97,8 +97,6 @@
 }
 
 TEST_F(NGBlockLayoutAlgorithmTest, Caching) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <div id="box" style="width:30px; height:40%;"></div>
   )HTML");
@@ -146,8 +144,6 @@
 }
 
 TEST_F(NGBlockLayoutAlgorithmTest, MinInlineSizeCaching) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <div id="box" style="min-width:30%; width: 10px; height:40px;"></div>
   )HTML");
@@ -190,8 +186,6 @@
 }
 
 TEST_F(NGBlockLayoutAlgorithmTest, PercentageBlockSizeQuirkDescendantsCaching) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Quirks mode triggers the interesting parent-child %-resolution behaviour.
   GetDocument().SetCompatibilityMode(Document::kQuirksMode);
 
@@ -296,8 +290,6 @@
 }
 
 TEST_F(NGBlockLayoutAlgorithmTest, LineOffsetCaching) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <div id="container" style="display: flow-root; width: 300px; height: 100px;">
       <div id="box1" style="width: 100px; margin: 0 auto 0 auto;"></div>
diff --git a/third_party/blink/renderer/core/layout/ng/ng_block_node.cc b/third_party/blink/renderer/core/layout/ng/ng_block_node.cc
index d488dcea..2e5adc3 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_block_node.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_block_node.cc
@@ -26,6 +26,7 @@
 #include "third_party/blink/renderer/core/layout/ng/legacy_layout_tree_walking.h"
 #include "third_party/blink/renderer/core/layout/ng/list/layout_ng_list_item.h"
 #include "third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.h"
+#include "third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_block_break_token.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_block_layout_algorithm.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_box_fragment.h"
@@ -44,6 +45,8 @@
 #include "third_party/blink/renderer/core/layout/ng/ng_simplified_layout_algorithm.h"
 #include "third_party/blink/renderer/core/layout/ng/ng_space_utils.h"
 #include "third_party/blink/renderer/core/layout/shapes/shape_outside_info.h"
+#include "third_party/blink/renderer/core/mathml/mathml_element.h"
+#include "third_party/blink/renderer/core/mathml/mathml_space_element.h"
 #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
 #include "third_party/blink/renderer/platform/text/writing_mode.h"
@@ -75,6 +78,21 @@
 }
 
 template <typename Callback>
+NOINLINE void DetermineMathMLAlgorithmAndRun(
+    const LayoutBox& box,
+    const NGLayoutAlgorithmParams& params,
+    const Callback& callback) {
+  DCHECK(box.IsMathML());
+  // Currently math layout algorithms can only apply to MathML elements.
+  auto* element = box.GetNode();
+  DCHECK(element);
+  if (IsA<MathMLSpaceElement>(element))
+    CreateAlgorithmAndRun<NGMathSpaceLayoutAlgorithm>(params, callback);
+  else
+    CreateAlgorithmAndRun<NGMathRowLayoutAlgorithm>(params, callback);
+}
+
+template <typename Callback>
 NOINLINE void DetermineAlgorithmAndRun(const NGLayoutAlgorithmParams& params,
                                        const Callback& callback) {
   const ComputedStyle& style = params.node.Style();
@@ -84,7 +102,7 @@
   } else if (box.IsLayoutNGCustom()) {
     CreateAlgorithmAndRun<NGCustomLayoutAlgorithm>(params, callback);
   } else if (box.IsMathML()) {
-    CreateAlgorithmAndRun<NGMathRowLayoutAlgorithm>(params, callback);
+    DetermineMathMLAlgorithmAndRun(box, params, callback);
   } else if (box.IsLayoutNGFieldset()) {
     CreateAlgorithmAndRun<NGFieldsetLayoutAlgorithm>(params, callback);
     // If there's a legacy layout box, we can only do block fragmentation if
diff --git a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.cc b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.cc
index 014bb83..e916c43 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.cc
@@ -35,8 +35,7 @@
 }  // namespace
 
 NGConstraintSpace NGConstraintSpace::CreateFromLayoutObject(
-    const LayoutBlock& block,
-    bool is_layout_root) {
+    const LayoutBlock& block) {
   // We should only ever create a constraint space from legacy layout if the
   // object is a new formatting context.
   DCHECK(block.CreatesNewFormattingContext());
@@ -77,20 +76,7 @@
                                    /* is_new_fc */ true,
                                    !parallel_containing_block);
 
-  auto* previous_result = block.GetCachedLayoutResult();
-  if (is_layout_root && previous_result) {
-    // Due to layout-roots (starting layout at an arbirary node, instead of the
-    // |LayoutView|), we can end up with a situation where we'll miss our cache
-    // due to baseline-requests not matching.
-    //
-    // For the case where we start at a layout-root, the baselines don't
-    // particularly matter, so we just request exactly the same as the previous
-    // layout.
-    const NGConstraintSpace& previous_space =
-        previous_result->GetConstraintSpaceForCaching();
-    builder.SetNeedsBaseline(previous_space.NeedsBaseline());
-    builder.SetBaselineAlgorithmType(previous_space.BaselineAlgorithmType());
-  } else if (!block.IsWritingModeRoot() || block.IsGridItem()) {
+  if (!block.IsWritingModeRoot() || block.IsGridItem()) {
     // We don't know if the parent layout will require our baseline, so always
     // request it.
     builder.SetNeedsBaseline(true);
diff --git a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
index a7bd7da..1209fa4 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
+++ b/third_party/blink/renderer/core/layout/ng/ng_constraint_space.h
@@ -146,8 +146,7 @@
   // Creates NGConstraintSpace representing LayoutObject's containing block.
   // This should live on NGBlockNode or another layout bridge and probably take
   // a root NGConstraintSpace.
-  static NGConstraintSpace CreateFromLayoutObject(const LayoutBlock&,
-                                                  bool is_layout_root);
+  static NGConstraintSpace CreateFromLayoutObject(const LayoutBlock&);
 
   const NGExclusionSpace& ExclusionSpace() const { return exclusion_space_; }
 
diff --git a/third_party/blink/renderer/core/layout/ng/ng_layout_result_caching_test.cc b/third_party/blink/renderer/core/layout/ng/ng_layout_result_caching_test.cc
index 646cf33..d935e34 100644
--- a/third_party/blink/renderer/core/layout/ng/ng_layout_result_caching_test.cc
+++ b/third_party/blink/renderer/core/layout/ng/ng_layout_result_caching_test.cc
@@ -19,8 +19,6 @@
 class NGLayoutResultCachingTest : public NGLayoutTest {};
 
 TEST_F(NGLayoutResultCachingTest, HitDifferentExclusionSpace) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Same BFC offset, different exclusion space.
   SetBodyInnerHTML(R"HTML(
     <style>
@@ -58,8 +56,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitDifferentBFCOffset) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Different BFC offset, same exclusion space.
   SetBodyInnerHTML(R"HTML(
     <style>
@@ -123,8 +119,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitDifferentBFCOffsetSameMarginStrut) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Different BFC offset, same margin-strut.
   SetBodyInnerHTML(R"HTML(
     <style>
@@ -155,8 +149,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MissDescendantAboveBlockStart1) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Same BFC offset, different exclusion space, descendant above
   // block start.
   SetBodyInnerHTML(R"HTML(
@@ -195,8 +187,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MissDescendantAboveBlockStart2) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Different BFC offset, same exclusion space, descendant above
   // block start.
   SetBodyInnerHTML(R"HTML(
@@ -235,8 +225,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitOOFDescendantAboveBlockStart) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Different BFC offset, same exclusion space, OOF-descendant above
   // block start.
   SetBodyInnerHTML(R"HTML(
@@ -275,8 +263,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitLineBoxDescendantAboveBlockStart) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Different BFC offset, same exclusion space, line-box descendant above
   // block start.
   SetBodyInnerHTML(R"HTML(
@@ -320,8 +306,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MissFloatInitiallyIntruding1) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Same BFC offset, different exclusion space, float initially
   // intruding.
   SetBodyInnerHTML(R"HTML(
@@ -358,8 +342,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MissFloatInitiallyIntruding2) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Different BFC offset, same exclusion space, float initially
   // intruding.
   SetBodyInnerHTML(R"HTML(
@@ -396,8 +378,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MissFloatWillIntrude1) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Same BFC offset, different exclusion space, float will intrude.
   SetBodyInnerHTML(R"HTML(
     <style>
@@ -433,8 +413,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MissFloatWillIntrude2) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Different BFC offset, same exclusion space, float will intrude.
   SetBodyInnerHTML(R"HTML(
     <style>
@@ -470,8 +448,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitPushedByFloats1) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Same BFC offset, different exclusion space, pushed by floats.
   SetBodyInnerHTML(R"HTML(
     <style>
@@ -507,8 +483,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitPushedByFloats2) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Different BFC offset, same exclusion space, pushed by floats.
   SetBodyInnerHTML(R"HTML(
     <style>
@@ -544,8 +518,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MissPushedByFloats1) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Same BFC offset, different exclusion space, pushed by floats.
   // Miss due to shrinking offset.
   SetBodyInnerHTML(R"HTML(
@@ -582,8 +554,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MissPushedByFloats2) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Different BFC offset, same exclusion space, pushed by floats.
   // Miss due to shrinking offset.
   SetBodyInnerHTML(R"HTML(
@@ -620,8 +590,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitDifferentRareData) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Same absolute fixed constraints.
   SetBodyInnerHTML(R"HTML(
     <style>
@@ -651,8 +619,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitPercentageMinWidth) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // min-width calculates to different values, but doesn't change size.
   SetBodyInnerHTML(R"HTML(
     <style>
@@ -682,8 +648,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitFixedMinWidth) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // min-width is always larger than the available size.
   SetBodyInnerHTML(R"HTML(
     <style>
@@ -713,8 +677,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitShrinkToFit) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <div style="display: flow-root; width: 300px; height: 100px;">
       <div id="test1" style="float: left;">
@@ -767,8 +729,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MissShrinkToFit) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <div style="display: flow-root; width: 300px; height: 100px;">
       <div id="test1" style="float: left;">
@@ -861,8 +821,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitShrinkToFitSameIntrinsicSizes) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // We have a shrink-to-fit node, with the min, and max intrinsic sizes being
   // equal (the available size doesn't affect the final size).
   SetBodyInnerHTML(R"HTML(
@@ -898,8 +856,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitShrinkToFitDifferentParent) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // The parent "bfc" node changes from shrink-to-fit, to a fixed width. But
   // these calculate as the same available space to the "test" element.
   SetBodyInnerHTML(R"HTML(
@@ -934,8 +890,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MissQuirksModePercentageBasedChild) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Quirks-mode %-block-size child.
   GetDocument().SetCompatibilityMode(Document::kQuirksMode);
   SetBodyInnerHTML(R"HTML(
@@ -970,8 +924,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitQuirksModePercentageBasedParentAndChild) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Quirks-mode %-block-size parent *and* child. Here we mark the parent as
   // depending on %-block-size changes, however itself doesn't change in
   // height.
@@ -1011,8 +963,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitStandardsModePercentageBasedChild) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   // Standards-mode %-block-size child.
   SetBodyInnerHTML(R"HTML(
     <style>
@@ -1046,8 +996,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, ChangeTableCellBlockSizeConstrainedness) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <style>
       .table { display: table; width: 300px; }
@@ -1116,8 +1064,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, OptimisticFloatPlacementNoRelayout) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <style>
       .root { display: flow-root; width: 300px; }
@@ -1142,8 +1088,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, SelfCollapsingShifting) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <style>
       .bfc { display: flow-root; width: 300px; height: 300px; }
@@ -1228,8 +1172,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, ClearancePastAdjoiningFloatsMovement) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <style>
       .bfc { display: flow-root; width: 300px; height: 300px; }
@@ -1294,8 +1236,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MarginStrutMovementSelfCollapsing) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <style>
       .bfc { display: flow-root; width: 300px; height: 300px; }
@@ -1365,8 +1305,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MarginStrutMovementInFlow) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <style>
       .bfc { display: flow-root; width: 300px; height: 300px; }
@@ -1463,8 +1401,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MarginStrutMovementPercentage) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <style>
       .bfc { display: flow-root; width: 300px; height: 300px; }
@@ -1503,8 +1439,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, HitIsFixedBlockSizeIndefinite) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <div style="display: flex; width: 100px; height: 100px;">
       <div id="test1" style="flex-grow: 1; min-height: 100px;">
@@ -1537,8 +1471,6 @@
 }
 
 TEST_F(NGLayoutResultCachingTest, MissIsFixedBlockSizeIndefinite) {
-  ScopedLayoutNGFragmentCachingForTest layout_ng_fragment_caching(true);
-
   SetBodyInnerHTML(R"HTML(
     <!DOCTYPE html>
     <div style="display: flex; width: 100px; height: 100px; align-items: start;">
diff --git a/third_party/blink/renderer/core/mathml/BUILD.gn b/third_party/blink/renderer/core/mathml/BUILD.gn
index 13601cd..98fea9a 100644
--- a/third_party/blink/renderer/core/mathml/BUILD.gn
+++ b/third_party/blink/renderer/core/mathml/BUILD.gn
@@ -10,5 +10,7 @@
     "mathml_element.h",
     "mathml_row_element.cc",
     "mathml_row_element.h",
+    "mathml_space_element.cc",
+    "mathml_space_element.h",
   ]
 }
diff --git a/third_party/blink/renderer/core/mathml/mathml_attribute_names.json5 b/third_party/blink/renderer/core/mathml/mathml_attribute_names.json5
index 7e4430d5..5f5d065e 100644
--- a/third_party/blink/renderer/core/mathml/mathml_attribute_names.json5
+++ b/third_party/blink/renderer/core/mathml/mathml_attribute_names.json5
@@ -8,9 +8,12 @@
 
   data: [
     "definitionURL",
+    "depth",
     "encoding",
+    "height",
     "mathbackground",
     "mathcolor",
     "mathsize",
+    "width",
   ],
 }
diff --git a/third_party/blink/renderer/core/mathml/mathml_element.h b/third_party/blink/renderer/core/mathml/mathml_element.h
index 3640aed..04a0bef 100644
--- a/third_party/blink/renderer/core/mathml/mathml_element.h
+++ b/third_party/blink/renderer/core/mathml/mathml_element.h
@@ -25,12 +25,14 @@
     return HasLocalName(name.LocalName());
   }
 
- private:
-  bool IsPresentationAttribute(const QualifiedName&) const final;
-  void CollectStyleForPresentationAttribute(const QualifiedName&,
-                                            const AtomicString&,
-                                            MutableCSSPropertyValueSet*) final;
+ protected:
+  bool IsPresentationAttribute(const QualifiedName&) const override;
+  void CollectStyleForPresentationAttribute(
+      const QualifiedName&,
+      const AtomicString&,
+      MutableCSSPropertyValueSet*) override;
 
+ private:
   void ParseAttribute(const AttributeModificationParams&) final;
 
   bool IsMathMLElement() const =
diff --git a/third_party/blink/renderer/core/mathml/mathml_space_element.cc b/third_party/blink/renderer/core/mathml/mathml_space_element.cc
new file mode 100644
index 0000000..194af8e
--- /dev/null
+++ b/third_party/blink/renderer/core/mathml/mathml_space_element.cc
@@ -0,0 +1,61 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "third_party/blink/renderer/core/mathml/mathml_space_element.h"
+
+#include "third_party/blink/renderer/core/layout/ng/mathml/layout_ng_mathml_block.h"
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
+
+namespace blink {
+
+MathMLSpaceElement::MathMLSpaceElement(Document& doc)
+    : MathMLElement(mathml_names::kMspaceTag, doc) {}
+
+bool MathMLSpaceElement::IsPresentationAttribute(
+    const QualifiedName& name) const {
+  if (name == mathml_names::kWidthAttr || name == mathml_names::kHeightAttr ||
+      name == mathml_names::kDepthAttr)
+    return true;
+  return MathMLElement::IsPresentationAttribute(name);
+}
+
+void MathMLSpaceElement::CollectStyleForPresentationAttribute(
+    const QualifiedName& name,
+    const AtomicString& value,
+    MutableCSSPropertyValueSet* style) {
+  if (name == mathml_names::kWidthAttr) {
+    AddPropertyToPresentationAttributeStyle(style, CSSPropertyID::kWidth,
+                                            value);
+  } else if (name == mathml_names::kHeightAttr ||
+             name == mathml_names::kDepthAttr) {
+    // TODO(rbuis): this can be simplified once attr() is supported for
+    // width/height.
+    String height = FastGetAttribute(mathml_names::kHeightAttr);
+    String depth = FastGetAttribute(mathml_names::kDepthAttr);
+    if (!height.IsEmpty() && !depth.IsEmpty()) {
+      AddPropertyToPresentationAttributeStyle(
+          style, CSSPropertyID::kHeight,
+          "calc(" + height + " + " + depth + ")");
+    } else {
+      AddPropertyToPresentationAttributeStyle(style, CSSPropertyID::kHeight,
+                                              value);
+    }
+    if (name == mathml_names::kHeightAttr) {
+      AddPropertyToPresentationAttributeStyle(
+          style, CSSPropertyID::kVerticalAlign, value);
+    }
+  } else {
+    MathMLElement::CollectStyleForPresentationAttribute(name, value, style);
+  }
+}
+
+LayoutObject* MathMLSpaceElement::CreateLayoutObject(const ComputedStyle& style,
+                                                     LegacyLayout legacy) {
+  if (!RuntimeEnabledFeatures::MathMLCoreEnabled() ||
+      !style.IsDisplayMathType() || legacy == LegacyLayout::kForce)
+    return MathMLElement::CreateLayoutObject(style, legacy);
+  return new LayoutNGMathMLBlock(this);
+}
+
+}  // namespace blink
diff --git a/third_party/blink/renderer/core/mathml/mathml_space_element.h b/third_party/blink/renderer/core/mathml/mathml_space_element.h
new file mode 100644
index 0000000..a4ae212
--- /dev/null
+++ b/third_party/blink/renderer/core/mathml/mathml_space_element.h
@@ -0,0 +1,31 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_MATHML_MATHML_SPACE_ELEMENT_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_MATHML_MATHML_SPACE_ELEMENT_H_
+
+#include "third_party/blink/renderer/core/mathml/mathml_element.h"
+
+namespace blink {
+
+class LayoutObject;
+class ComputedStyle;
+
+class MathMLSpaceElement final : public MathMLElement {
+ public:
+  explicit MathMLSpaceElement(Document&);
+
+ private:
+  LayoutObject* CreateLayoutObject(const ComputedStyle&,
+                                   LegacyLayout legacy) override;
+  bool IsPresentationAttribute(const QualifiedName&) const override;
+  void CollectStyleForPresentationAttribute(
+      const QualifiedName&,
+      const AtomicString&,
+      MutableCSSPropertyValueSet*) override;
+};
+
+}  // namespace blink
+
+#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_MATHML_MATHML_SPACE_ELEMENT_H_
diff --git a/third_party/blink/renderer/core/mathml/mathml_tag_names.json5 b/third_party/blink/renderer/core/mathml/mathml_tag_names.json5
index 51c8b51..daecf8a 100644
--- a/third_party/blink/renderer/core/mathml/mathml_tag_names.json5
+++ b/third_party/blink/renderer/core/mathml/mathml_tag_names.json5
@@ -60,6 +60,10 @@
       interfaceName: "MathMLElement",
     },
     {
+      name: "mspace",
+      interfaceName: "MathMLSpaceElement",
+    },
+    {
       name: "mstyle",
       interfaceName: "MathMLRowElement",
     },
diff --git a/third_party/blink/renderer/modules/accessibility/ax_menu_list.cc b/third_party/blink/renderer/modules/accessibility/ax_menu_list.cc
index 7dc749b..190922a67 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_menu_list.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_menu_list.cc
@@ -26,15 +26,17 @@
 #include "third_party/blink/renderer/modules/accessibility/ax_menu_list.h"
 
 #include "third_party/blink/renderer/core/html/forms/html_select_element.h"
-#include "third_party/blink/renderer/core/layout/layout_menu_list.h"
+#include "third_party/blink/renderer/core/layout/layout_object.h"
 #include "third_party/blink/renderer/modules/accessibility/ax_menu_list_popup.h"
 #include "third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h"
 
 namespace blink {
 
-AXMenuList::AXMenuList(LayoutMenuList* layout_object,
+AXMenuList::AXMenuList(LayoutObject* layout_object,
                        AXObjectCacheImpl& ax_object_cache)
-    : AXLayoutObject(layout_object, ax_object_cache) {}
+    : AXLayoutObject(layout_object, ax_object_cache) {
+  DCHECK(IsA<HTMLSelectElement>(layout_object->GetNode()));
+}
 
 ax::mojom::Role AXMenuList::DetermineAccessibilityRole() {
   if ((aria_role_ = DetermineAriaRoleAttribute()) != ax::mojom::Role::kUnknown)
@@ -47,7 +49,7 @@
   if (!layout_object_)
     return false;
 
-  HTMLSelectElement* select = ToLayoutMenuList(layout_object_)->SelectElement();
+  HTMLSelectElement* select = To<HTMLSelectElement>(GetNode());
   if (select->PopupIsVisible())
     select->HidePopup();
   else
@@ -94,7 +96,7 @@
   if (!layout_object_)
     return true;
 
-  return !ToLayoutMenuList(layout_object_)->SelectElement()->PopupIsVisible();
+  return !To<HTMLSelectElement>(GetNode())->PopupIsVisible();
 }
 
 AccessibilityExpanded AXMenuList::IsExpanded() const {
diff --git a/third_party/blink/renderer/modules/accessibility/ax_menu_list.h b/third_party/blink/renderer/modules/accessibility/ax_menu_list.h
index 2fe4dc2..ab8ab32 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_menu_list.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_menu_list.h
@@ -32,11 +32,10 @@
 namespace blink {
 
 class AXObjectCacheImpl;
-class LayoutMenuList;
 
 class AXMenuList final : public AXLayoutObject {
  public:
-  AXMenuList(LayoutMenuList*, AXObjectCacheImpl&);
+  AXMenuList(LayoutObject*, AXObjectCacheImpl&);
 
   AccessibilityExpanded IsExpanded() const final;
   bool OnNativeClickAction() override;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
index ac2c6ca..73a49e4b 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
+++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.cc
@@ -57,8 +57,6 @@
 #include "third_party/blink/renderer/core/html_names.h"
 #include "third_party/blink/renderer/core/input_type_names.h"
 #include "third_party/blink/renderer/core/layout/api/line_layout_api_shim.h"
-#include "third_party/blink/renderer/core/layout/layout_list_box.h"
-#include "third_party/blink/renderer/core/layout/layout_menu_list.h"
 #include "third_party/blink/renderer/core/layout/layout_progress.h"
 #include "third_party/blink/renderer/core/layout/layout_slider.h"
 #include "third_party/blink/renderer/core/layout/layout_table.h"
@@ -424,10 +422,11 @@
 
   if (layout_object->IsBoxModelObject()) {
     LayoutBoxModelObject* css_box = ToLayoutBoxModelObject(layout_object);
-    if (css_box->IsListBox())
-      return MakeGarbageCollected<AXListBox>(ToLayoutListBox(css_box), *this);
-    if (css_box->IsMenuList())
-      return MakeGarbageCollected<AXMenuList>(ToLayoutMenuList(css_box), *this);
+    if (auto* select_element = DynamicTo<HTMLSelectElement>(node)) {
+      if (select_element->UsesMenuList())
+        return MakeGarbageCollected<AXMenuList>(css_box, *this);
+      return MakeGarbageCollected<AXListBox>(css_box, *this);
+    }
 
     // progress bar
     if (css_box->IsProgress()) {
@@ -1712,7 +1711,7 @@
   PostNotification(node, ax::mojom::Event::kValueChanged);
 }
 
-void AXObjectCacheImpl::HandleUpdateActiveMenuOption(LayoutMenuList* menu_list,
+void AXObjectCacheImpl::HandleUpdateActiveMenuOption(LayoutObject* menu_list,
                                                      int option_index) {
   AXObject* obj = Get(menu_list);
   if (!obj || !obj->IsMenuList())
@@ -1721,7 +1720,7 @@
   ToAXMenuList(obj)->DidUpdateActiveOption(option_index);
 }
 
-void AXObjectCacheImpl::DidShowMenuListPopup(LayoutMenuList* menu_list) {
+void AXObjectCacheImpl::DidShowMenuListPopup(LayoutObject* menu_list) {
   AXObject* obj = Get(menu_list);
   if (!obj || !obj->IsMenuList())
     return;
@@ -1729,7 +1728,7 @@
   ToAXMenuList(obj)->DidShowPopup();
 }
 
-void AXObjectCacheImpl::DidHideMenuListPopup(LayoutMenuList* menu_list) {
+void AXObjectCacheImpl::DidHideMenuListPopup(LayoutObject* menu_list) {
   AXObject* obj = Get(menu_list);
   if (!obj || !obj->IsMenuList())
     return;
diff --git a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h
index 74a7ab7b..c5a46b4 100644
--- a/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h
+++ b/third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h
@@ -130,9 +130,9 @@
   void HandleScaleAndLocationChanged(Document*) override;
   void HandleTextMarkerDataAdded(Node* start, Node* end) override;
   void HandleValueChanged(Node*) override;
-  void HandleUpdateActiveMenuOption(LayoutMenuList*, int option_index) override;
-  void DidShowMenuListPopup(LayoutMenuList*) override;
-  void DidHideMenuListPopup(LayoutMenuList*) override;
+  void HandleUpdateActiveMenuOption(LayoutObject*, int option_index) override;
+  void DidShowMenuListPopup(LayoutObject*) override;
+  void DidHideMenuListPopup(LayoutObject*) override;
   void HandleLoadComplete(Document*) override;
   void HandleLayoutComplete(Document*) override;
   void HandleClicked(Node*) override;
diff --git a/third_party/blink/renderer/modules/animationworklet/worklet_animation.h b/third_party/blink/renderer/modules/animationworklet/worklet_animation.h
index 6b0cf23..07bc8e8 100644
--- a/third_party/blink/renderer/modules/animationworklet/worklet_animation.h
+++ b/third_party/blink/renderer/modules/animationworklet/worklet_animation.h
@@ -91,9 +91,13 @@
   // relevant to CSS animations which means it does not have any material effect
   // on worklet animations either way.
   bool IsEventDispatchAllowed() const override { return true; }
-  // Effect supression is used by devtool's animation inspection machinery which
-  // is not currently supported by worklet animations.
+  // Effect suppression is used by devtool's animation inspection machinery
+  // which is not currently supported by worklet animations.
   bool EffectSuppressed() const override { return false; }
+  // Worklet animations are not currently replaceable.
+  // TODO(crbug.com/833846): Make replaceable once a proper subclass of
+  // Animation.
+  bool ReplaceStateRemoved() const override { return false; }
 
   void EffectInvalidated() override;
   void UpdateIfNecessary() override;
diff --git a/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source.cc b/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source.cc
index 63d08f1..cab1ff58 100644
--- a/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source.cc
+++ b/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source.cc
@@ -284,10 +284,37 @@
   video_frame->metadata()->SetTimeTicks(
       media::VideoFrameMetadata::DECODE_END_TIME, current_time);
 
+  // RTP_TIMESTAMP, PROCESSING_TIME, and CAPTURE_BEGIN_TIME are all exposed
+  // through the JavaScript callback mechanism video.requestAnimationFrame().
   video_frame->metadata()->SetDouble(
       media::VideoFrameMetadata::RTP_TIMESTAMP,
       static_cast<double>(incoming_frame.timestamp()));
 
+  if (incoming_frame.processing_time()) {
+    video_frame->metadata()->SetTimeDelta(
+        media::VideoFrameMetadata::PROCESSING_TIME,
+        base::TimeDelta::FromMicroseconds(
+            incoming_frame.processing_time()->Elapsed().us()));
+  }
+
+  // Set capture time to arrival of last packet.
+  if (!incoming_frame.packet_infos().empty()) {
+    int64_t last_packet_arrival_ms =
+        std::max_element(
+            incoming_frame.packet_infos().cbegin(),
+            incoming_frame.packet_infos().cend(),
+            [](const webrtc::RtpPacketInfo& a, const webrtc::RtpPacketInfo& b) {
+              return a.receive_time_ms() < b.receive_time_ms();
+            })
+            ->receive_time_ms();
+    const base::TimeTicks capture_time =
+        base::TimeTicks() +
+        base::TimeDelta::FromMilliseconds(last_packet_arrival_ms) + time_diff_;
+
+    video_frame->metadata()->SetTimeTicks(
+        media::VideoFrameMetadata::CAPTURE_BEGIN_TIME, capture_time);
+  }
+
   PostCrossThreadTask(
       *io_task_runner_, FROM_HERE,
       CrossThreadBindOnce(&RemoteVideoSourceDelegate::DoRenderFrameOnIOThread,
diff --git a/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source_test.cc b/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source_test.cc
index 8b96314..4df3531 100644
--- a/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source_test.cc
+++ b/third_party/blink/renderer/modules/peerconnection/media_stream_remote_video_source_test.cc
@@ -24,12 +24,22 @@
 #include "third_party/blink/renderer/platform/testing/io_task_runner_testing_platform_support.h"
 #include "third_party/blink/renderer/platform/webrtc/track_observer.h"
 #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h"
+#include "third_party/webrtc/api/rtp_packet_infos.h"
 #include "third_party/webrtc/api/video/color_space.h"
 #include "third_party/webrtc/api/video/i420_buffer.h"
 #include "ui/gfx/color_space.h"
 
 namespace blink {
 
+namespace {
+// On Linux the clock in WebRTC and Chromium are more or less the same.
+// On Windows they are not the same and the accuracy of the measured time
+// difference is in the range [-1, 1] ms. Since this is compensated for both
+// here and in MediaStreamRemoteVideoSource::RemoteVideoSourceDelegate we need
+// to use the worst case difference between these two measurements.
+float kChromiumWebRtcMaxTimeDiffMs = 2.0f;
+}  // namespace
+
 ACTION_P(RunClosure, closure) {
   closure.Run();
 }
@@ -55,7 +65,9 @@
             blink::MockWebRtcVideoTrack::Create("test", webrtc_video_source_)),
         remote_source_(nullptr),
         number_of_successful_track_starts_(0),
-        number_of_failed_track_starts_(0) {}
+        number_of_failed_track_starts_(0),
+        time_diff_(base::TimeTicks::Now() - base::TimeTicks() -
+                   base::TimeDelta::FromMicroseconds(rtc::TimeMicros())) {}
 
   void SetUp() override {
     scoped_refptr<base::SingleThreadTaskRunner> main_thread =
@@ -139,6 +151,8 @@
     return web_source_;
   }
 
+  const base::TimeDelta& time_diff() const { return time_diff_; }
+
  private:
   void OnTrackStarted(blink::WebPlatformMediaStreamSource* source,
                       blink::mojom::MediaStreamRequestResult result,
@@ -159,6 +173,8 @@
   blink::WebMediaStreamSource web_source_;
   int number_of_successful_track_starts_;
   int number_of_failed_track_starts_;
+  // WebRTC Chromium timestamp diff
+  const base::TimeDelta time_diff_;
 };
 
 TEST_F(MediaStreamRemoteVideoSourceTest, StartTrack) {
@@ -264,6 +280,150 @@
   track->RemoveSink(&sink);
 }
 
+// These tests depend on measuring the difference between the internal WebRTC
+// clock and Chromium's clock. Due to this they are performance sensitive and
+// appear to be flaky for builds with ASAN enabled.
+#if defined(ADDRESS_SANITIZER)
+#define MAYBE_PopulateRequestAnimationFrameMetadata \
+  DISABLED_PopulateRequestAnimationFrameMetadata
+#define MAYBE_ReferenceTimeEqualsTimestampUs \
+  DISABLED_ReferenceTimeEqualsTimestampUs
+#else
+#define MAYBE_PopulateRequestAnimationFrameMetadata \
+  PopulateRequestAnimationFrameMetadata
+#define MAYBE_ReferenceTimeEqualsTimestampUs ReferenceTimeEqualsTimestampUs
+#endif
+TEST_F(MediaStreamRemoteVideoSourceTest,
+       MAYBE_PopulateRequestAnimationFrameMetadata) {
+  std::unique_ptr<blink::MediaStreamVideoTrack> track(CreateTrack());
+  blink::MockMediaStreamVideoSink sink;
+  track->AddSink(&sink, sink.GetDeliverFrameCB(), false);
+
+  base::RunLoop run_loop;
+  EXPECT_CALL(sink, OnVideoFrame())
+      .WillOnce(RunClosure(run_loop.QuitClosure()));
+  rtc::scoped_refptr<webrtc::I420Buffer> buffer(
+      new rtc::RefCountedObject<webrtc::I420Buffer>(320, 240));
+
+  uint32_t kSsrc = 0;
+  const std::vector<uint32_t> kCsrcs;
+  uint32_t kRtpTimestamp = 123456;
+  float kProcessingTime = 0.014;
+
+  const webrtc::Timestamp kProcessingFinish =
+      webrtc::Timestamp::ms(rtc::TimeMillis());
+  const webrtc::Timestamp kProcessingStart =
+      kProcessingFinish - webrtc::TimeDelta::ms(1.0e3 * kProcessingTime);
+
+  webrtc::RtpPacketInfos::vector_type packet_infos;
+  for (int i = 0; i < 4; ++i) {
+    packet_infos.emplace_back(kSsrc, kCsrcs, kRtpTimestamp, absl::nullopt,
+                              absl::nullopt, kProcessingStart.ms() - 100 + i);
+  }
+  // Capture time should be the same as the last arrival time.
+  base::TimeTicks kExpectedCaptureTime =
+      base::TimeTicks() +
+      base::TimeDelta::FromMilliseconds(kProcessingStart.ms() - 100 + 3) +
+      time_diff();
+
+  webrtc::VideoFrame input_frame =
+      webrtc::VideoFrame::Builder()
+          .set_video_frame_buffer(buffer)
+          .set_timestamp_rtp(kRtpTimestamp)
+          .set_packet_infos(webrtc::RtpPacketInfos(packet_infos))
+          .build();
+
+  input_frame.set_processing_time({kProcessingStart, kProcessingFinish});
+  source()->SinkInterfaceForTesting()->OnFrame(input_frame);
+  run_loop.Run();
+
+  EXPECT_EQ(1, sink.number_of_frames());
+  scoped_refptr<media::VideoFrame> output_frame = sink.last_frame();
+  EXPECT_TRUE(output_frame);
+
+  base::TimeDelta elapsed;
+  EXPECT_TRUE(output_frame->metadata()->GetTimeDelta(
+      media::VideoFrameMetadata::PROCESSING_TIME, &elapsed));
+  EXPECT_FLOAT_EQ(elapsed.InSecondsF(), kProcessingTime);
+
+  base::TimeTicks capture_time;
+  EXPECT_TRUE(output_frame->metadata()->GetTimeTicks(
+      media::VideoFrameMetadata::CAPTURE_BEGIN_TIME, &capture_time));
+  EXPECT_NEAR((capture_time - kExpectedCaptureTime).InMillisecondsF(), 0.0f,
+              kChromiumWebRtcMaxTimeDiffMs);
+
+  double rtp_timestamp;
+  EXPECT_TRUE(output_frame->metadata()->GetDouble(
+      media::VideoFrameMetadata::RTP_TIMESTAMP, &rtp_timestamp));
+  EXPECT_EQ(static_cast<uint32_t>(rtp_timestamp), kRtpTimestamp);
+
+  track->RemoveSink(&sink);
+}
+
+TEST_F(MediaStreamRemoteVideoSourceTest, MAYBE_ReferenceTimeEqualsTimestampUs) {
+  std::unique_ptr<blink::MediaStreamVideoTrack> track(CreateTrack());
+  blink::MockMediaStreamVideoSink sink;
+  track->AddSink(&sink, sink.GetDeliverFrameCB(), false);
+
+  base::RunLoop run_loop;
+  EXPECT_CALL(sink, OnVideoFrame())
+      .WillOnce(RunClosure(run_loop.QuitClosure()));
+  rtc::scoped_refptr<webrtc::I420Buffer> buffer(
+      new rtc::RefCountedObject<webrtc::I420Buffer>(320, 240));
+
+  int64_t kTimestampUs = rtc::TimeMicros();
+  webrtc::VideoFrame input_frame = webrtc::VideoFrame::Builder()
+                                       .set_video_frame_buffer(buffer)
+                                       .set_timestamp_us(kTimestampUs)
+                                       .build();
+
+  source()->SinkInterfaceForTesting()->OnFrame(input_frame);
+  run_loop.Run();
+
+  EXPECT_EQ(1, sink.number_of_frames());
+  scoped_refptr<media::VideoFrame> output_frame = sink.last_frame();
+  EXPECT_TRUE(output_frame);
+
+  base::TimeTicks reference_time;
+  EXPECT_TRUE(output_frame->metadata()->GetTimeTicks(
+      media::VideoFrameMetadata::REFERENCE_TIME, &reference_time));
+  EXPECT_NEAR((reference_time -
+               (base::TimeTicks() +
+                base::TimeDelta::FromMicroseconds(kTimestampUs) + time_diff()))
+                  .InMillisecondsF(),
+              0.0f, kChromiumWebRtcMaxTimeDiffMs);
+  track->RemoveSink(&sink);
+}
+
+// This is a special case that is used to signal "render immediately".
+TEST_F(MediaStreamRemoteVideoSourceTest, NoTimestampUsMeansNoReferenceTime) {
+  std::unique_ptr<blink::MediaStreamVideoTrack> track(CreateTrack());
+  blink::MockMediaStreamVideoSink sink;
+  track->AddSink(&sink, sink.GetDeliverFrameCB(), false);
+
+  base::RunLoop run_loop;
+  EXPECT_CALL(sink, OnVideoFrame())
+      .WillOnce(RunClosure(run_loop.QuitClosure()));
+  rtc::scoped_refptr<webrtc::I420Buffer> buffer(
+      new rtc::RefCountedObject<webrtc::I420Buffer>(320, 240));
+
+  webrtc::VideoFrame input_frame =
+      webrtc::VideoFrame::Builder().set_video_frame_buffer(buffer).build();
+
+  source()->SinkInterfaceForTesting()->OnFrame(input_frame);
+  run_loop.Run();
+
+  EXPECT_EQ(1, sink.number_of_frames());
+  scoped_refptr<media::VideoFrame> output_frame = sink.last_frame();
+  EXPECT_TRUE(output_frame);
+
+  base::TimeTicks reference_time;
+  EXPECT_FALSE(output_frame->metadata()->GetTimeTicks(
+      media::VideoFrameMetadata::REFERENCE_TIME, &reference_time));
+
+  track->RemoveSink(&sink);
+}
+
 class TestEncodedVideoFrame : public webrtc::RecordableEncodedFrame {
  public:
   rtc::scoped_refptr<const webrtc::EncodedImageBufferInterface> encoded_buffer()
diff --git a/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.cc b/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.cc
index 177cc15..8136160f 100644
--- a/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.cc
+++ b/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.cc
@@ -248,7 +248,17 @@
       direction_(direction),
       current_direction_(blink::ToAbslOptional(current_direction)) {}
 
-FakeRtpTransceiver::~FakeRtpTransceiver() {}
+FakeRtpTransceiver::~FakeRtpTransceiver() = default;
+
+void FakeRtpTransceiver::ReplaceWith(const FakeRtpTransceiver& other) {
+  media_type_ = other.media_type_;
+  sender_ = other.sender_;
+  receiver_ = other.receiver_;
+  mid_ = other.mid_;
+  stopped_ = other.stopped_;
+  direction_ = other.direction_;
+  current_direction_ = other.current_direction_;
+}
 
 cricket::MediaType FakeRtpTransceiver::media_type() const {
   return media_type_;
diff --git a/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.h b/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.h
index cf4a311..d9ec8fb 100644
--- a/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.h
+++ b/third_party/blink/renderer/modules/peerconnection/mock_peer_connection_impl.h
@@ -98,7 +98,7 @@
       base::Optional<webrtc::RtpTransceiverDirection> current_direction);
   ~FakeRtpTransceiver() override;
 
-  FakeRtpTransceiver& operator=(const FakeRtpTransceiver& other) = default;
+  void ReplaceWith(const FakeRtpTransceiver& other);
 
   cricket::MediaType media_type() const override;
   absl::optional<std::string> mid() const override;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver_impl_test.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver_impl_test.cc
index 746060a9..b524abf 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver_impl_test.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_transceiver_impl_test.cc
@@ -285,10 +285,10 @@
 
   // Modify the webrtc transceiver and create a new state object for the
   // modified state.
-  *webrtc_transceiver =
+  webrtc_transceiver->ReplaceWith(
       *CreateWebRtcTransceiver(webrtc_sender, webrtc_receiver, "MidyMacMidface",
                                true, webrtc::RtpTransceiverDirection::kInactive,
-                               webrtc::RtpTransceiverDirection::kSendRecv);
+                               webrtc::RtpTransceiverDirection::kSendRecv));
   RtpTransceiverState modified_transceiver_state =
       CreateTransceiverState(webrtc_transceiver, local_track_adapter->Copy(),
                              remote_track_adapter->Copy());
@@ -353,9 +353,9 @@
   // shared internal state.
   {
     // Modify webrtc transceiver to be stopped.
-    *webrtc_transceiver = *CreateWebRtcTransceiver(
+    webrtc_transceiver->ReplaceWith(*CreateWebRtcTransceiver(
         webrtc_sender, webrtc_receiver, base::nullopt, true /* stopped */,
-        webrtc::RtpTransceiverDirection::kSendRecv, base::nullopt);
+        webrtc::RtpTransceiverDirection::kSendRecv, base::nullopt));
     RtpTransceiverState transceiver_state =
         CreateTransceiverState(webrtc_transceiver, local_track_adapter->Copy(),
                                remote_track_adapter->Copy());
@@ -390,10 +390,10 @@
   // Modify the webrtc transceiver and create a new state object for the
   // modified state.
   webrtc_sender->SetTrack(nullptr);
-  *webrtc_transceiver =
+  webrtc_transceiver->ReplaceWith(
       *CreateWebRtcTransceiver(webrtc_sender, webrtc_receiver, "MidyMacMidface",
                                true, webrtc::RtpTransceiverDirection::kInactive,
-                               webrtc::RtpTransceiverDirection::kSendRecv);
+                               webrtc::RtpTransceiverDirection::kSendRecv));
   RtpTransceiverState modified_transceiver_state =
       CreateTransceiverState(webrtc_transceiver, local_track_adapter->Copy(),
                              remote_track_adapter->Copy());
diff --git a/third_party/blink/renderer/modules/webtransport/quic_transport.cc b/third_party/blink/renderer/modules/webtransport/quic_transport.cc
index 2825389..2a79c67 100644
--- a/third_party/blink/renderer/modules/webtransport/quic_transport.cc
+++ b/third_party/blink/renderer/modules/webtransport/quic_transport.cc
@@ -13,7 +13,6 @@
 #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
 #include "third_party/blink/public/mojom/webtransport/quic_transport_connector.mojom-blink.h"
 #include "third_party/blink/public/platform/task_type.h"
-#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
 #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_array_buffer.h"
 #include "third_party/blink/renderer/bindings/core/v8/v8_array_buffer_view.h"
@@ -187,6 +186,7 @@
     auto promise = WritableStream::Close(script_state_, outgoing_datagrams_);
     promise->MarkAsHandled();
   }
+  closed_resolver_->Resolve(close_info);
   Dispose();
 }
 
@@ -214,6 +214,12 @@
 
 void QuicTransport::OnHandshakeFailed() {
   DVLOG(1) << "QuicTransport::OnHandshakeFailed() this=" << this;
+  {
+    ScriptState::Scope scope(script_state_);
+    v8::Local<v8::Value> reason = V8ThrowException::CreateTypeError(
+        script_state_->GetIsolate(), "Connection lost.");
+    closed_resolver_->Reject(reason);
+  }
   Dispose();
 }
 
@@ -260,6 +266,8 @@
   visitor->Trace(received_datagrams_controller_);
   visitor->Trace(outgoing_datagrams_);
   visitor->Trace(script_state_);
+  visitor->Trace(closed_resolver_);
+  visitor->Trace(closed_);
   ContextLifecycleObserver::Trace(visitor);
   ScriptWrappable::Trace(visitor);
 }
@@ -289,6 +297,9 @@
     return;
   }
 
+  closed_resolver_ = MakeGarbageCollected<ScriptPromiseResolver>(script_state_);
+  closed_ = closed_resolver_->Promise();
+
   auto* execution_context = GetExecutionContext();
 
   if (!execution_context->GetContentSecurityPolicyForWorld()
@@ -350,6 +361,7 @@
     received_datagrams_controller_->Error(reason);
     WritableStreamDefaultController::Error(
         script_state_, outgoing_datagrams_->Controller(), reason);
+    closed_resolver_->Reject(reason);
   }
 
   Dispose();
diff --git a/third_party/blink/renderer/modules/webtransport/quic_transport.h b/third_party/blink/renderer/modules/webtransport/quic_transport.h
index 6c52df7..e7d980d 100644
--- a/third_party/blink/renderer/modules/webtransport/quic_transport.h
+++ b/third_party/blink/renderer/modules/webtransport/quic_transport.h
@@ -14,6 +14,7 @@
 #include "mojo/public/cpp/system/data_pipe.h"
 #include "services/network/public/mojom/quic_transport.mojom-blink.h"
 #include "third_party/blink/renderer/bindings/core/v8/active_script_wrappable.h"
+#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
 #include "third_party/blink/renderer/core/execution_context/context_lifecycle_observer.h"
 #include "third_party/blink/renderer/modules/modules_export.h"
 #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
@@ -26,6 +27,7 @@
 class ExecutionContext;
 class ReadableStream;
 class ReadableStreamDefaultControllerWithScriptScope;
+class ScriptPromiseResolver;
 class ScriptState;
 class WebTransportCloseInfo;
 class WritableStream;
@@ -52,10 +54,9 @@
 
   // QuicTransport IDL implementation.
   WritableStream* sendDatagrams() { return outgoing_datagrams_; }
-
   ReadableStream* receiveDatagrams() { return received_datagrams_; }
-
   void close(const WebTransportCloseInfo*);
+  ScriptPromise closed() { return closed_; }
 
   // QuicTransportHandshakeClient implementation
   void OnConnectionEstablished(
@@ -101,6 +102,8 @@
       handshake_client_receiver_{this};
   mojo::Receiver<network::mojom::blink::QuicTransportClient> client_receiver_{
       this};
+  Member<ScriptPromiseResolver> closed_resolver_;
+  ScriptPromise closed_;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/webtransport/quic_transport.idl b/third_party/blink/renderer/modules/webtransport/quic_transport.idl
index c791c99..00277990 100644
--- a/third_party/blink/renderer/modules/webtransport/quic_transport.idl
+++ b/third_party/blink/renderer/modules/webtransport/quic_transport.idl
@@ -20,4 +20,5 @@
 
   // From WebTransport mixin
   void close(optional WebTransportCloseInfo closeInfo = {});
+  readonly attribute Promise<WebTransportCloseInfo> closed;
 };
diff --git a/third_party/blink/renderer/modules/webtransport/quic_transport_test.cc b/third_party/blink/renderer/modules/webtransport/quic_transport_test.cc
index e3bf948..432daba 100644
--- a/third_party/blink/renderer/modules/webtransport/quic_transport_test.cc
+++ b/third_party/blink/renderer/modules/webtransport/quic_transport_test.cc
@@ -323,6 +323,8 @@
   auto* quic_transport = QuicTransport::Create(
       scope.GetScriptState(), String("quic-transport://example.com/"),
       ASSERT_NO_EXCEPTION);
+  ScriptPromiseTester closed_tester(scope.GetScriptState(),
+                                    quic_transport->closed());
 
   test::RunPendingTasks();
 
@@ -336,6 +338,7 @@
 
   test::RunPendingTasks();
   EXPECT_FALSE(quic_transport->HasPendingActivity());
+  EXPECT_TRUE(closed_tester.IsRejected());
 }
 
 TEST_F(QuicTransportTest, CloseDuringConnect) {
@@ -344,6 +347,8 @@
   auto* quic_transport = QuicTransport::Create(
       scope.GetScriptState(), String("quic-transport://example.com/"),
       ASSERT_NO_EXCEPTION);
+  ScriptPromiseTester closed_tester(scope.GetScriptState(),
+                                    quic_transport->closed());
 
   test::RunPendingTasks();
 
@@ -355,12 +360,15 @@
   test::RunPendingTasks();
 
   EXPECT_FALSE(quic_transport->HasPendingActivity());
+  EXPECT_TRUE(closed_tester.IsFulfilled());
 }
 
 TEST_F(QuicTransportTest, CloseAfterConnection) {
   V8TestingScope scope;
   auto* quic_transport =
       CreateAndConnectSuccessfully(scope, "quic-transport://example.com");
+  ScriptPromiseTester closed_tester(scope.GetScriptState(),
+                                    quic_transport->closed());
 
   WebTransportCloseInfo close_info;
   close_info.setErrorCode(42);
@@ -373,6 +381,7 @@
   // start sending it.
 
   EXPECT_FALSE(quic_transport->HasPendingActivity());
+  EXPECT_TRUE(closed_tester.IsFulfilled());
 
   // Calling close again does nothing.
   quic_transport->close(nullptr);
@@ -422,6 +431,9 @@
         CreateAndConnectSuccessfully(scope, "quic-transport://example.com");
   }
 
+  ScriptPromiseTester closed_tester(scope.GetScriptState(),
+                                    quic_transport->closed());
+
   // Closing the server-side of the pipe causes a mojo connection error.
   client_remote_.reset();
 
@@ -431,6 +443,7 @@
       scope.GetIsolate(), v8::EmbedderHeapTracer::EmbedderStackState::kEmpty);
 
   EXPECT_FALSE(quic_transport);
+  EXPECT_TRUE(closed_tester.IsRejected());
 }
 
 TEST_F(QuicTransportTest, SendDatagram) {
diff --git a/third_party/blink/renderer/platform/heap/heap_page.cc b/third_party/blink/renderer/platform/heap/heap_page.cc
index 02cd697..1504c13 100644
--- a/third_party/blink/renderer/platform/heap/heap_page.cc
+++ b/third_party/blink/renderer/platform/heap/heap_page.cc
@@ -1680,6 +1680,7 @@
     }
     header_address += header->size();
   }
+  ClearCardTable();
 }
 
 #if defined(ADDRESS_SANITIZER)
@@ -1849,6 +1850,7 @@
   if (header->IsMarked()) {
     header->Unmark();
   }
+  SetRemembered(false);
 }
 
 void LargeObjectPage::MakeConsistentForMutator() {
diff --git a/third_party/blink/renderer/platform/heap/heap_page.h b/third_party/blink/renderer/platform/heap/heap_page.h
index 5f3d006c..e42797c 100644
--- a/third_party/blink/renderer/platform/heap/heap_page.h
+++ b/third_party/blink/renderer/platform/heap/heap_page.h
@@ -903,7 +903,6 @@
 
   // Remembers the page as containing inter-generational pointers.
   void SetRemembered(bool remembered) {
-    DCHECK_NE(remembered, is_remembered_);
     is_remembered_ = remembered;
   }
   bool IsRemembered() const { return is_remembered_; }
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
index df35ee8..06c94ea 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.cc
@@ -778,6 +778,20 @@
   if (resource && !resource->IsAlive() && !ContainsAsPreload(resource)) {
     DEFINE_RESOURCE_HISTOGRAM("Dead.");
   }
+
+  // Async (and defer) scripts may have more cache misses, track them
+  // separately. See https://crbug.com/1043679 for context.
+  if (params.Defer() != FetchParameters::DeferOption::kNoDefer) {
+    // This slightly awkward way avoids generating code which is never reached
+    // (and relying on the compiler to eliminate it, which is not guaranteed).
+    // The DEFINE_RESOURCE_HISTOGRAM() macro generates cases for all resources.
+    switch (factory.GetType()) {
+      DEFINE_SINGLE_RESOURCE_HISTOGRAM("Async", Script);
+
+      default:
+        break;
+    }
+  }
 }
 
 bool ResourceFetcher::ContainsAsPreload(Resource* resource) const {
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 6f919650..abbeaaf 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -901,10 +901,6 @@
       name: "LayoutNGFlexBox",
     },
     {
-      name: "LayoutNGFragmentCaching",
-      implied_by: ["LayoutNG"],
-    },
-    {
       name: "LayoutNGFragmentItem",
     },
     {
diff --git a/third_party/blink/renderer/platform/scheduler/common/thread_cpu_throttler.cc b/third_party/blink/renderer/platform/scheduler/common/thread_cpu_throttler.cc
index c184e22..856a09c 100644
--- a/third_party/blink/renderer/platform/scheduler/common/thread_cpu_throttler.cc
+++ b/third_party/blink/renderer/platform/scheduler/common/thread_cpu_throttler.cc
@@ -106,6 +106,9 @@
   struct sigaction sa;
   sa.sa_handler = &HandleSignal;
   sigemptyset(&sa.sa_mask);
+  // Block SIGPROF while our handler is running so that the V8 CPU profiler
+  // doesn't try to sample the stack while our signal handler is active.
+  sigaddset(&sa.sa_mask, SIGPROF);
   sa.sa_flags = SA_RESTART;
   signal_handler_installed_ =
       (sigaction(SIGUSR2, &sa, &old_signal_handler_) == 0);
diff --git a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
index 727c536..c9f0b21 100755
--- a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
+++ b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage.py
@@ -433,7 +433,9 @@
              'Use WTF containers like WTF::Deque, WTF::HashMap, WTF::HashSet or WTF::Vector instead of the banned std containers. '
              'However, it is fine to use std containers at the boundary layer between Blink and Chromium. '
              'If you are in this case, you can use --bypass-hooks option to avoid the presubmit check when uploading your CL.'),
-            '(blink::)?mojom::(?!blink).+',
+            ('([a-zA-Z]*::)?mojom::(?!blink).+',
+             'Using non-blink mojom types, consider using "::mojom::blink::Foo" instead of "::mojom::Foo" unless you have clear reasons not to do so',
+             'Warning'),
         ],
     },
     {
@@ -989,13 +991,15 @@
     """Turns the raw config into a config of compiled regex."""
     match_nothing_re = re.compile('.^')
 
-    def compile_regexp(match_list):
+    def compile_regexp(match_list, is_list=True):
         """Turns a match list into a compiled regexp.
 
         If match_list is None, a regexp that matches nothing is returned.
         """
+        if (match_list and is_list):
+            match_list = '(?:%s)$' % '|'.join(match_list)
         if match_list:
-            return re.compile('(?:%s)$' % '|'.join(match_list))
+            return re.compile(match_list)
         return match_nothing_re
 
     def compile_disallowed(disallowed_list):
@@ -1006,9 +1010,13 @@
         advice_list = []
         for entry in disallowed_list:
             if isinstance(entry, tuple):
-                match, advice = entry
+                warning = ''
+                if len(entry) == 2:
+                    match, advice = entry
+                else:
+                    match, advice, warning = entry
                 match_list.append(match)
-                advice_list.append((compile_regexp(match), advice))
+                advice_list.append((compile_regexp(match, False), advice, warning == 'Warning'))
             else:
                 # Just a string
                 match_list.append(entry)
@@ -1075,18 +1083,19 @@
 def _find_advice_for_identifier(entries, identifier):
     advice_list = []
     for entry in entries:
-        for matcher, advice in entry.get('advice', []):
+        for matcher, advice, warning in entry.get('advice', []):
             if matcher.match(identifier):
                 advice_list.append(advice)
-    return advice_list
+    return advice_list, warning
 
 
 class BadIdentifier(object):
     """Represents a single instance of a bad identifier."""
-    def __init__(self, identifier, line, advice=None):
+    def __init__(self, identifier, line, advice=None, warning=False):
         self.identifier = identifier
         self.line = line
         self.advice = advice
+        self.warning = warning
 
 
 def check(path, contents):
@@ -1125,9 +1134,9 @@
         if match:
             identifier = match.group(0)
             if not _check_entries_for_identifier(entries, identifier):
-                advice = _find_advice_for_identifier(entries, identifier)
+                advice, warning = _find_advice_for_identifier(entries, identifier)
                 results.append(
-                    BadIdentifier(identifier, line_number, advice))
+                    BadIdentifier(identifier, line_number, advice, warning))
     return results
 
 
diff --git a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage_test.py b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage_test.py
index d7003931..a6b5d09 100755
--- a/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage_test.py
+++ b/third_party/blink/tools/blinkpy/presubmit/audit_non_blink_usage_test.py
@@ -23,7 +23,7 @@
                 self.assertIsInstance(entry['allowed'], self._REGEXP_CLASS)
             if 'disallowed' in entry:
                 self.assertIsInstance(entry['disallowed'], self._REGEXP_CLASS)
-            for match, advice in entry.get('advice', []):
+            for match, advice, warning in entry.get('advice', []):
                 self.assertIsInstance(match, self._REGEXP_CLASS)
                 self.assertIsInstance(advice, str)
 
diff --git a/third_party/blink/web_tests/FlagExpectations/layout-ng-fragment-item b/third_party/blink/web_tests/FlagExpectations/layout-ng-fragment-item
index 1f51eb7..f00808f 100644
--- a/third_party/blink/web_tests/FlagExpectations/layout-ng-fragment-item
+++ b/third_party/blink/web_tests/FlagExpectations/layout-ng-fragment-item
@@ -18,9 +18,6 @@
 crbug.com/982194 editing/selection/offset-from-point.html [ Failure ]
 crbug.com/591099 editing/selection/paint-hyphen.html [ Failure ]
 crbug.com/741259 editing/selection/select-bidi-run.html [ Failure ]
-crbug.com/982194 editing/selection/select-line-break-with-opposite-directionality.html [ Failure Pass ]
-crbug.com/982194 editing/selection/select-out-of-floated-contenteditable.html [ Failure Pass ]
-crbug.com/982194 editing/selection/select-out-of-floated-input.html [ Failure Pass ]
 crbug.com/982194 editing/selection/shift-click.html [ Failure ]
 crbug.com/982194 external/wpt/2dcontext/building-paths/canvas_complexshapes_arcto_001.htm [ Pass ]
 crbug.com/982194 external/wpt/2dcontext/building-paths/canvas_complexshapes_beziercurveto_001.htm [ Pass ]
@@ -61,7 +58,6 @@
 crbug.com/982194 external/wpt/css/css-writig-modes/sizing-orthog-htb-in-vlr-011.xht [ Failure ]
 crbug.com/982194 external/wpt/css/css-writing-modes/inline-table-alignment-003.xht [ Failure ]
 crbug.com/982194 external/wpt/css/css-writing-modes/inline-table-alignment-005.xht [ Failure ]
-crbug.com/982194 external/wpt/css/cssom-view/elementsFromPoint-simple.html [ Failure Pass ]
 crbug.com/982194 external/wpt/css/cssom-view/offsetTopLeft-trailing-space-inline.html [ Pass ]
 crbug.com/982194 external/wpt/css/csui/text-overflow-002.html [ Failure ]
 crbug.com/982194 external/wpt/css/filter-effects/filtered-inline-applies-to-float.html [ Failure ]
@@ -129,7 +125,6 @@
 crbug.com/982194 external/wpt/pointerevents/extension/pointerevent_touch-action-pan-up-css_touch.html [ Timeout ]
 crbug.com/626703 external/wpt/screen-orientation/onchange-event.html [ Timeout ]
 crbug.com/626703 external/wpt/screen-orientation/orientation-reading.html [ Timeout ]
-crbug.com/982194 external/wpt/uievents/mouse/mouseevent_move_button-manual.html [ Pass Timeout ]
 crbug.com/645988 external/wpt/uievents/order-of-events/focus-eventfocus-manual.html [ Crash Failure ]
 crbug.com/645988 external/wpt/uievents/order-of-events/focus-events/focus-manual.html [ Failure ]
 crbug.com/1002514 external/wpt/web-share/share-sharePromise-internal-slot.https.html [ Pass ]
@@ -141,24 +136,17 @@
 crbug.com/982194 external/wpt/webxr/events_referenceSpace_reset_inline.https.html [ Timeout ]
 crbug.com/982194 fast/backgrounds/background-clip-text-multiline-linebreak.html [ Failure ]
 crbug.com/982194 fast/backgrounds/background-clip-text-multiline.html [ Crash ]
-crbug.com/982194 fast/block/float/float-in-float-hit-testing.html [ Failure Pass ]
 crbug.com/982194 fast/block/positioning/absolute-in-inline-dynamic.html [ Failure ]
 crbug.com/982194 fast/block/positioning/rel-positioned-inline-changes-width.html [ Failure ]
 crbug.com/982194 fast/css-generated-content/table-parts-before-and-after.html [ Failure ]
-crbug.com/982194 fast/css/area-computedStyle.html [ Pass Timeout ]
 crbug.com/982194 fast/css/first-line-hover-001.html [ Failure ]
 crbug.com/982194 fast/css/getComputedStyle/computed-style-percentage-top-with-position-inline.html [ Failure ]
 crbug.com/835484 fast/css/outline-narrowLine.html [ Failure ]
 crbug.com/982194 fast/css/pseudo-element-hit-test.html [ Crash ]
-crbug.com/982194 fast/dnd/link-dragging-draggable-div-with-dragged-link.html [ Pass Timeout ]
-crbug.com/982194 fast/dnd/link-dragging-draggable-div-with-link.html [ Pass Timeout ]
-crbug.com/982194 fast/dnd/link-dragging-draggable-link.html [ Pass Timeout ]
-crbug.com/982194 fast/dnd/link-dragging-non-draggable-link.html [ Pass Timeout ]
 crbug.com/982194 fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-user-select-none.html [ Failure ]
 crbug.com/982194 fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-with-before-style.html [ Failure ]
 crbug.com/982194 fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-with-first-letter-style.html [ Failure ]
 crbug.com/982194 fast/dom/Document/CaretRangeFromPoint/replace-element.html [ Failure ]
-crbug.com/982194 fast/dom/elementsFromPoint/elementsFromPoint-simple.html [ Failure Pass ]
 crbug.com/982194 fast/dom/nodesFromRect/nodesFromRect-child-frame-content.html [ Failure ]
 crbug.com/982194 fast/dom/nodesFromRect/nodesFromRect-culled-inlines-between-silblings-bidi.html [ Failure ]
 crbug.com/982194 fast/dom/nodesFromRect/nodesFromRect-embedded-frame-content.html [ Failure ]
@@ -168,19 +156,10 @@
 crbug.com/346473 fast/events/drag-on-mouse-move-cancelled.html [ Failure ]
 crbug.com/982194 fast/events/event-on-culled-inline-with-pseudo.html [ Failure ]
 crbug.com/874695 fast/events/frame-detached-in-mousedown.html [ Pass ]
-crbug.com/982194 fast/events/pointerevents/mouse-node-remove.html [ Failure Pass ]
-crbug.com/982194 fast/events/pointerevents/mouse-pointer-capture-transition-events.html [ Failure Pass ]
-crbug.com/982194 fast/events/pointerevents/mouse-pointer-capture.html [ Failure Pass ]
 crbug.com/722212 fast/events/pointerevents/mouse-pointer-event-properties.html [ Failure ]
-crbug.com/982194 fast/events/pointerevents/mouse-pointer-transition-events.html [ Failure Pass ]
-crbug.com/982194 fast/events/pointerevents/mouse-pointer-updown-events.html [ Failure Pass ]
 crbug.com/874695 fast/events/pointerevents/pointerevent_touch-adjustment_click_target.html [ Pass ]
-crbug.com/982194 fast/events/pointerevents/touch-capture.html [ Failure Pass ]
-crbug.com/982194 fast/events/pointerevents/touch-pointer-events.html [ Failure Pass ]
 crbug.com/874695 fast/events/popup-blocking-timers4.html [ Pass ]
 crbug.com/591099 fast/events/touch/compositor-touch-hit-rects.html [ Failure ]
-crbug.com/982194 fast/events/touch/gesture/gesture-tap-mouse-events-between-frames.html [ Failure Pass ]
-crbug.com/982194 fast/events/touch/gesture/gesture-tap-mouse-events.html [ Failure Pass ]
 crbug.com/874695 fast/forms/color/color-suggestion-picker-one-row-appearance.html [ Pass ]
 crbug.com/874695 fast/forms/color/color-suggestion-picker-two-row-appearance.html [ Pass ]
 crbug.com/874695 fast/forms/number/number-spinbutton-gets-disabled-or-readonly.html [ Pass ]
@@ -215,9 +194,9 @@
 crbug.com/451577 crbug.com/924308 http/tests/devtools/console/console-format-es6-2.js [ Crash Failure Pass Timeout ]
 crbug.com/451577 crbug.com/916975 http/tests/devtools/console/console-repeat-count.js [ Crash Failure Pass Timeout ]
 crbug.com/451577 http/tests/devtools/console/console-search.js [ Pass ]
-crbug.com/967526 http/tests/devtools/console/console-uncaught-promise.js [ Pass ]
+crbug.com/967526 http/tests/devtools/console/console-uncaught-promise.js [ Failure Pass ]
 crbug.com/982194 http/tests/devtools/coverage/decorations-after-script-formatter.js [ Timeout ]
-crbug.com/678482 http/tests/devtools/debugger/fetch-breakpoints.js [ Timeout ]
+crbug.com/678482 http/tests/devtools/debugger/fetch-breakpoints.js [ Pass Timeout ]
 crbug.com/846997 http/tests/devtools/editor/text-editor-ctrl-d-1.js [ Timeout ]
 crbug.com/850358 http/tests/devtools/editor/text-editor-enter-behaviour.js [ Pass Timeout ]
 crbug.com/846982 crbug.com/874695 http/tests/devtools/editor/text-editor-formatter.js [ Crash Pass Timeout ]
@@ -253,7 +232,7 @@
 crbug.com/982194 http/tests/devtools/network/network-cookies-pane.js [ Failure ]
 crbug.com/679833 crbug.com/762529 http/tests/devtools/network/network-datareceived.js [ Crash Failure Timeout ]
 crbug.com/759632 http/tests/devtools/network/network-datasaver-warning.js [ Failure ]
-crbug.com/945629 http/tests/devtools/network/network-filters.js [ Pass Timeout ]
+crbug.com/945629 http/tests/devtools/network/network-filters.js [ Timeout ]
 crbug.com/817167 crbug.com/874695 http/tests/devtools/oopif/oopif-cookies-refresh.js [ Crash Failure Pass Timeout ]
 crbug.com/818076 http/tests/devtools/oopif/oopif-elements-navigate-in.js [ Pass ]
 crbug.com/874695 http/tests/devtools/persistence/persistence-mimetype-on-rename.js [ Pass ]
@@ -261,7 +240,7 @@
 crbug.com/831673 http/tests/devtools/reveal-objects.js [ Timeout ]
 crbug.com/849670 http/tests/devtools/service-workers/service-worker-v8-cache.js [ Timeout ]
 crbug.com/874695 crbug.com/954319 http/tests/devtools/sources/debugger-breakpoints/breakpoints-ui-in-multiple-workers.js [ Crash Pass Timeout ]
-crbug.com/874695 http/tests/devtools/sources/debugger-breakpoints/breakpoints-ui-shifted-breakpoint.js [ Pass ]
+crbug.com/874695 http/tests/devtools/sources/debugger-breakpoints/breakpoints-ui-shifted-breakpoint.js [ Pass Timeout ]
 crbug.com/874695 http/tests/devtools/sources/debugger-breakpoints/dom-breakpoints.js [ Pass ]
 crbug.com/450493 crbug.com/912793 http/tests/devtools/sources/debugger-breakpoints/restore-locations-for-breakpoint-with-broken-source-map.js [ Crash Failure Pass Timeout ]
 crbug.com/874695 http/tests/devtools/sources/debugger-frameworks/frameworks-dom-xhr-event-breakpoints.js [ Pass ]
@@ -293,7 +272,7 @@
 crbug.com/982194 paint/invalidation/block-layout-inline-children-replaced.html [ Failure ]
 crbug.com/982194 paint/invalidation/block-no-inflow-children.html [ Failure ]
 crbug.com/982194 paint/invalidation/box/hover-pseudo-borders.html [ Failure ]
-crbug.com/982194 paint/invalidation/box/invalidate-box-shadow-currentColor.html [ Failure ]
+crbug.com/982194 paint/invalidation/box/invalidate-box-shadow-currentColor.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/bugzilla-3509.html [ Failure ]
 crbug.com/982194 paint/invalidation/bugzilla-5699.html [ Failure ]
 crbug.com/982194 paint/invalidation/bugzilla-6278.html [ Failure ]
@@ -302,7 +281,7 @@
 crbug.com/982194 paint/invalidation/compositing/should-not-clip-composited-overflow-scrolling-layer.html [ Failure ]
 crbug.com/982194 paint/invalidation/compositing/should-not-clip-composited-viewport-scrolling-layer.html [ Failure ]
 crbug.com/982194 paint/invalidation/compositing/text-color-change.html [ Failure ]
-crbug.com/982194 paint/invalidation/compositing/text-match-highlight.html [ Failure ]
+crbug.com/982194 paint/invalidation/compositing/text-match-highlight.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/compositing/updating-scrolling-container-and-content.html [ Failure ]
 crbug.com/982194 paint/invalidation/crbug-371640-4.html [ Failure ]
 crbug.com/982194 paint/invalidation/crbug-371640.html [ Failure ]
@@ -311,7 +290,7 @@
 crbug.com/982194 paint/invalidation/float-new-in-block.html [ Failure ]
 crbug.com/982194 paint/invalidation/forms/details-marker-color-change.html [ Crash ]
 crbug.com/982194 paint/invalidation/gradients-em-stops-repaint.html [ Failure ]
-crbug.com/982194 paint/invalidation/inline-color-change.html [ Failure ]
+crbug.com/982194 paint/invalidation/inline-color-change.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/inline-reflow.html [ Failure ]
 crbug.com/982194 paint/invalidation/line-flow-with-floats-1.html [ Failure ]
 crbug.com/982194 paint/invalidation/line-flow-with-floats-10.html [ Failure ]
@@ -324,20 +303,20 @@
 crbug.com/982194 paint/invalidation/line-flow-with-floats-8.html [ Failure ]
 crbug.com/982194 paint/invalidation/line-flow-with-floats-9.html [ Failure ]
 crbug.com/982194 paint/invalidation/lines-with-layout-delta.html [ Failure ]
-crbug.com/982194 paint/invalidation/list-marker-2.html [ Failure ]
-crbug.com/982194 paint/invalidation/make-children-non-inline.html [ Failure ]
+crbug.com/982194 paint/invalidation/list-marker-2.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/make-children-non-inline.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/non-text-link-invalidation-optimization.html [ Failure ]
-crbug.com/982194 paint/invalidation/offset-change-wrong-invalidation-with-float.html [ Failure ]
-crbug.com/982194 paint/invalidation/outline/focus-continuations.html [ Failure ]
-crbug.com/982194 paint/invalidation/outline/focus-enable-continuations.html [ Failure ]
+crbug.com/982194 paint/invalidation/offset-change-wrong-invalidation-with-float.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/outline/focus-continuations.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/outline/focus-enable-continuations.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/outline/focus-ring-on-child-move.html [ Failure ]
-crbug.com/982194 paint/invalidation/outline/focus-ring-on-continuation-move.html [ Failure ]
-crbug.com/982194 paint/invalidation/outline/focus-ring-on-inline-continuation-move.html [ Failure ]
+crbug.com/982194 paint/invalidation/outline/focus-ring-on-continuation-move.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/outline/focus-ring-on-inline-continuation-move.html [ Failure Pass ]
 crbug.com/835484 paint/invalidation/outline/inline-focus.html [ Failure ]
 crbug.com/982194 paint/invalidation/outline/inline-outline-repaint-2.html [ Failure ]
 crbug.com/982194 paint/invalidation/outline/outline-change-invalidation.html [ Failure ]
-crbug.com/982194 paint/invalidation/outline/outline-containing-image-in-non-standard-mode.html [ Failure ]
-crbug.com/982194 paint/invalidation/outline/outline-continuations.html [ Failure ]
+crbug.com/982194 paint/invalidation/outline/outline-containing-image-in-non-standard-mode.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/outline/outline-continuations.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/overflow/float-overflow-right.html [ Failure ]
 crbug.com/982194 paint/invalidation/overflow/float-overflow.html [ Failure ]
 crbug.com/982194 paint/invalidation/overflow/inline-overflow.html [ Failure ]
@@ -345,11 +324,11 @@
 crbug.com/982194 paint/invalidation/overflow/inline-vertical-rl-overflow.html [ Failure ]
 crbug.com/982194 paint/invalidation/overflow/line-overflow.html [ Failure ]
 crbug.com/982194 paint/invalidation/overflow/negative-text-indent-with-overflow-hidden.html [ Failure ]
-crbug.com/982194 paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries.html [ Failure ]
-crbug.com/982194 paint/invalidation/position/abspos-shift-image-incorrect-repaint.html [ Failure ]
+crbug.com/982194 paint/invalidation/paint-invalidation-with-reparent-across-frame-boundaries.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/position/abspos-shift-image-incorrect-repaint.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/position/inline-relative-positioned.html [ Failure ]
 crbug.com/982194 paint/invalidation/position/layout-state-relative.html [ Failure ]
-crbug.com/982194 paint/invalidation/position/layoutstate-invalid-invalidation-inline-relative-positioned.html [ Failure ]
+crbug.com/982194 paint/invalidation/position/layoutstate-invalid-invalidation-inline-relative-positioned.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/position/positioned-document-element.html [ Failure ]
 crbug.com/982194 paint/invalidation/position/positioned-great-grandparent-change-location.html [ Failure ]
 crbug.com/982194 paint/invalidation/push-block-with-first-line.html [ Crash ]
@@ -360,27 +339,27 @@
 crbug.com/982194 paint/invalidation/repaint-across-writing-mode-boundary.html [ Failure ]
 crbug.com/982194 paint/invalidation/repaint-descandant-on-ancestor-layer-move.html [ Failure ]
 crbug.com/982194 paint/invalidation/scroll/inline-style-change-in-scrolled-view.html [ Failure ]
-crbug.com/982194 paint/invalidation/scroll/invalidate-after-composited-scroll-of-window.html [ Failure ]
+crbug.com/982194 paint/invalidation/scroll/invalidate-after-composited-scroll-of-window.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/scroll/layout-state-scrolloffset.html [ Failure ]
 crbug.com/982194 paint/invalidation/scroll/layout-state-scrolloffset2.html [ Failure ]
 crbug.com/982194 paint/invalidation/scroll/layout-state-scrolloffset3.html [ Failure ]
 crbug.com/982194 paint/invalidation/scroll/line-in-scrolled-clipped-block.html [ Failure ]
 crbug.com/982194 paint/invalidation/scroll/overflow-scroll-body-appear.html [ Failure ]
 crbug.com/982194 paint/invalidation/scroll/overflow-scroll-delete.html [ Failure ]
-crbug.com/982194 paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl.html [ Failure ]
-crbug.com/982194 paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-lr.html [ Failure ]
-crbug.com/982194 paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl.html [ Failure ]
-crbug.com/982194 paint/invalidation/selection/invalidation-rect-includes-newline.html [ Failure ]
+crbug.com/982194 paint/invalidation/selection/invalidation-rect-includes-newline-for-rtl.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-lr.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/selection/invalidation-rect-includes-newline-for-vertical-rl.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/selection/invalidation-rect-includes-newline.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/selection/invalidation-rect-with-br-includes-newline.html [ Failure ]
-crbug.com/982194 paint/invalidation/selection/japanese-rl-selection-clear.html [ Failure ]
+crbug.com/982194 paint/invalidation/selection/japanese-rl-selection-clear.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/selection/selection-change-in-iframe-with-relative-parent.html [ Failure ]
 crbug.com/982194 paint/invalidation/selection/selection-clear.html [ Failure ]
-crbug.com/982194 paint/invalidation/selection/selection-partial-invalidation-between-blocks.html [ Failure ]
-crbug.com/982194 paint/invalidation/selection/selection-rl.html [ Failure ]
-crbug.com/982194 paint/invalidation/selection/selection-within-composited-scroller.html [ Failure ]
+crbug.com/982194 paint/invalidation/selection/selection-partial-invalidation-between-blocks.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/selection/selection-rl.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/selection/selection-within-composited-scroller.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/selection/text-selection-rect-in-overflow-2.html [ Failure ]
-crbug.com/982194 paint/invalidation/selection/text-selection-rect-in-overflow.html [ Failure ]
-crbug.com/982194 paint/invalidation/stacked-diacritics.html [ Failure ]
+crbug.com/982194 paint/invalidation/selection/text-selection-rect-in-overflow.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/stacked-diacritics.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/svg/absolute-sized-content-with-resources.xhtml [ Failure ]
 crbug.com/982194 paint/invalidation/svg/object-sizing-no-width-height-change-content-box-size.xhtml [ Failure ]
 crbug.com/982194 paint/invalidation/svg/relative-sized-content-with-resources.xhtml [ Failure ]
@@ -405,11 +384,11 @@
 crbug.com/982194 paint/invalidation/table/table-collapsed-border.html [ Failure ]
 crbug.com/982194 paint/invalidation/table/table-shrink-row-repaint.html [ Failure ]
 crbug.com/982194 paint/invalidation/text-append-dirty-lines.html [ Failure ]
-crbug.com/982194 paint/invalidation/text-match-document-change.html [ Failure ]
+crbug.com/982194 paint/invalidation/text-match-document-change.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/transform/transform-layout-repaint.html [ Failure ]
 crbug.com/982194 paint/invalidation/vertical-rl-as-paint-container.html [ Failure ]
 crbug.com/919789 paint/invalidation/window-resize/window-resize-centered-inline-under-fixed-pos.html [ Failure ]
-crbug.com/919789 paint/invalidation/window-resize/window-resize-vertical-writing-mode.html [ Failure ]
+crbug.com/919789 paint/invalidation/window-resize/window-resize-vertical-writing-mode.html [ Failure Pass ]
 crbug.com/676229 plugins/mouse-click-plugin-clears-selection.html [ Failure ]
 crbug.com/982194 touchadjustment/touch-links-longpress.html [ Failure ]
 crbug.com/718155 virtual/android/fullscreen/full-screen-iframe-not-allowed.html [ Failure ]
@@ -420,7 +399,7 @@
 crbug.com/982194 compositing/gestures/gesture-tapHighlight-invisible-inline.html [ Failure ]
 crbug.com/982194 compositing/gestures/gesture-tapHighlight-simple-nested.html [ Failure ]
 crbug.com/982194 compositing/gestures/gesture-tapHighlight-with-squashing.html [ Failure ]
-crbug.com/982194 compositing/overflow/composited-scroll-with-fractional-translation.html [ Failure ]
+crbug.com/982194 compositing/overflow/composited-scroll-with-fractional-translation.html [ Failure Pass ]
 crbug.com/982194 css2.1/t100801-c544-valgn-00-a-ag.html [ Failure ]
 crbug.com/982194 css2.1/t100801-c544-valgn-03-d-agi.html [ Failure ]
 crbug.com/982194 css3/filters/backdrop-filter-svg.html [ Failure ]
@@ -480,6 +459,7 @@
 crbug.com/982194 external/wpt/css/CSS2/text/text-decoration-va-length-001.xht [ Failure ]
 crbug.com/982194 external/wpt/css/CSS2/text/text-decoration-va-length-002.xht [ Failure ]
 crbug.com/982194 external/wpt/css/CSS2/text/white-space-nowrap-attribute-001.xht [ Failure ]
+crbug.com/982194 external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html [ Pass ]
 crbug.com/982194 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-color-5.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-backgrounds/background-attachment-local/attachment-local-clipping-image-5.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-backgrounds/background-image-first-line.html [ Failure ]
@@ -619,7 +599,7 @@
 crbug.com/982194 external/wpt/css/css-overflow/webkit-line-clamp-013.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-overflow/webkit-line-clamp-014.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-overflow/webkit-line-clamp-024.html [ Failure ]
-crbug.com/982194 external/wpt/css/css-paint-api/background-image-alpha.https.html [ Pass ]
+crbug.com/982194 external/wpt/css/css-paint-api/background-image-alpha.https.html [ Failure Pass ]
 crbug.com/982194 external/wpt/css/css-position/position-absolute-center-001.tentative.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-position/position-absolute-center-002.tentative.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-position/position-sticky-nested-inline.html [ Failure ]
@@ -635,7 +615,6 @@
 crbug.com/982194 external/wpt/css/css-pseudo/marker-content-007.tentative.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-pseudo/marker-content-008.tentative.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-pseudo/marker-content-009.tentative.html [ Failure ]
-crbug.com/982194 external/wpt/css/css-pseudo/marker-content-010.html [ Pass ]
 crbug.com/982194 external/wpt/css/css-pseudo/marker-content-011.tentative.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-pseudo/marker-font-variant-numeric-normal.html [ Failure ]
 crbug.com/982194 external/wpt/css/css-pseudo/marker-list-style-position.html [ Failure ]
@@ -881,7 +860,7 @@
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-inset-022.html [ Failure ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/shapes1/shape-outside-inset-023.html [ Failure ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-external-declaration-01.html [ Failure Pass ]
-crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-external-reference-01.html [ Failure Pass ]
+crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-external-reference-01.html [ Failure ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/variables/variable-external-supports-01.html [ Failure Pass ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/logical-physical-mapping-001.html [ Failure ]
 crbug.com/982194 external/wpt/css/vendor-imports/mozilla/mozilla-central-reftests/writing-modes-3/text-combine-upright-break-inside-001a.html [ Failure ]
@@ -1214,8 +1193,6 @@
 crbug.com/982194 external/wpt/webvtt/rendering/cues-with-video/processing-model/selectors/default_styles/underline_object_default_font-style.html [ Failure ]
 crbug.com/982194 external/wpt/webvtt/rendering/cues-with-video/processing-model/size_50.html [ Failure ]
 crbug.com/982194 fast/backgrounds/quirks-mode-line-box-backgrounds.html [ Failure ]
-crbug.com/982194 fast/block/float/hittest-float-in-anchor.html [ Failure Pass ]
-crbug.com/982194 fast/block/float/overlapping-floats-paint-hittest-order-1.html [ Failure Pass ]
 crbug.com/982194 fast/block/positioning/058.html [ Failure ]
 crbug.com/982194 fast/block/positioning/absolute-in-inline-ltr-2.html [ Failure ]
 crbug.com/982194 fast/block/positioning/absolute-in-inline-ltr-3.html [ Failure ]
@@ -1277,7 +1254,7 @@
 crbug.com/982194 http/tests/devtools/editor/text-editor-reveal-line.js [ Pass Timeout ]
 crbug.com/982194 http/tests/devtools/elements/edit/edit-dom-actions-1.js [ Pass Timeout ]
 crbug.com/982194 http/tests/devtools/elements/edit/edit-dom-actions-2.js [ Pass Timeout ]
-crbug.com/982194 http/tests/devtools/elements/highlight/highlight-dom-updates.js [ Timeout ]
+crbug.com/982194 http/tests/devtools/elements/highlight/highlight-dom-updates.js [ Pass Timeout ]
 crbug.com/982194 http/tests/devtools/elements/styles-1/disable-property-workingcopy-update.js [ Timeout ]
 crbug.com/982194 http/tests/devtools/elements/styles-4/styles-update-from-js.js [ Timeout ]
 crbug.com/982194 http/tests/devtools/elements/styles/selector-line-sourcemap-header.js [ Pass Timeout ]
@@ -1308,17 +1285,16 @@
 crbug.com/982194 jquery/manipulation.html [ Pass Timeout ]
 crbug.com/982194 jquery/offset.html [ Pass ]
 crbug.com/982194 jquery/traversing.html [ Pass ]
-crbug.com/982194 media/video-canvas-draw.html [ Failure ]
+crbug.com/982194 media/video-canvas-draw.html [ Failure Pass ]
 crbug.com/982194 overflow/overflow-inline-003.html [ Failure ]
 crbug.com/982194 paint/background/background-clip-text-inline.html [ Failure ]
 crbug.com/982194 paint/invalidation/compositing/float-under-composited-inline.html [ Failure ]
-crbug.com/982194 paint/invalidation/flexbox/scrollbars-changed.html [ Failure ]
-crbug.com/982194 paint/invalidation/forms/slider-thumb-float.html [ Failure Pass ]
+crbug.com/982194 paint/invalidation/flexbox/scrollbars-changed.html [ Failure Pass ]
 crbug.com/982194 paint/invalidation/multi-layout-one-frame.html [ Failure ]
 crbug.com/982194 paint/invalidation/outline/focus-layers.html [ Failure ]
 crbug.com/982194 paint/invalidation/position/absolute-position-moved.html [ Failure ]
 crbug.com/982194 paint/invalidation/selection/selection-repaint.html [ Failure ]
-crbug.com/982194 paint/invalidation/svg/scroll-hit-test.xhtml [ Crash Failure ]
+crbug.com/982194 paint/invalidation/svg/scroll-hit-test.xhtml [ Failure ]
 crbug.com/982194 paint/invalidation/text-decoration-invalidation.html [ Failure ]
 crbug.com/982194 paint/selection/text-selection-inline-block-rtl.html [ Failure ]
 crbug.com/982194 paint/selection/text-selection-inline-block.html [ Failure ]
@@ -1328,7 +1304,7 @@
 crbug.com/982194 svg/zoom/page/zoom-svg-through-object-with-override-size.html [ Failure ]
 crbug.com/982194 tables/layering/paint-test-layering-1.html [ Failure ]
 crbug.com/982194 tables/layering/paint-test-layering-2.html [ Failure ]
-crbug.com/982194 transforms/3d/point-mapping/3d-point-mapping-deep.html [ Pass ]
+crbug.com/982194 transforms/3d/point-mapping/3d-point-mapping-deep.html [ Failure Pass ]
 crbug.com/982194 virtual/android/url-bar/bottom-and-top-fixed-sticks-to-top.html [ Failure ]
 crbug.com/908347 virtual/audio-service/media/autoplay/webaudio-audio-context-resume.html [ Failure Pass ]
 crbug.com/942951 virtual/audio-service/media/controls/controls-layout-in-different-size.html [ Pass ]
@@ -1339,7 +1315,7 @@
 crbug.com/982194 virtual/audio-service/media/stable/video-object-fit-stable.html [ Pass ]
 crbug.com/982194 virtual/audio-service/media/video-canvas-draw.html [ Failure Pass ]
 crbug.com/982194 virtual/cache-storage-sequence/external/wpt/service-workers/service-worker/udate-bytecheck.https.html [ Timeout ]
-crbug.com/982194 virtual/cascade/external/wpt/css/css-paint-api/background-image-alpha.https.html [ Pass ]
+crbug.com/982194 virtual/cascade/external/wpt/css/css-paint-api/background-image-alpha.https.html [ Failure Pass ]
 crbug.com/982194 virtual/cascade/external/wpt/css/css-scoping/slotted-with-pseudo-element.html [ Failure ]
 crbug.com/982194 virtual/cascade/fast/forms/calendar-picker/calendar-picker-appearance-zoom125.html [ Failure ]
 crbug.com/982194 virtual/cascade/fast/forms/date/date-appearance-basic.html [ Failure ]
@@ -1357,7 +1333,7 @@
 crbug.com/982194 virtual/controls-refresh/color-scheme/text/input-basic-box-appearance-basic.html [ Failure ]
 crbug.com/982194 virtual/controls-refresh/color-scheme/time/time-appearance-basic.html [ Failure ]
 crbug.com/982194 virtual/controls-refresh/color-scheme/week/week-appearance-basic.html [ Failure ]
-crbug.com/982194 virtual/exotic-color-space/images/yuv-decode-eligible/color-profile-layer-filter.html [ Pass ]
+crbug.com/982194 virtual/exotic-color-space/images/yuv-decode-eligible/color-profile-layer-filter.html [ Failure Pass ]
 crbug.com/985520 virtual/focusless-spat-nav/fast/spatial-navigation/focusless/snav-focusless-enter-from-interest-a11y.html [ Pass ]
 crbug.com/985520 virtual/focusless-spat-nav/fast/spatial-navigation/focusless/snav-focusless-enter-from-interest.html [ Pass ]
 crbug.com/982194 virtual/forced-high-contrast-cascade/external/wpt/forced-colors-mode/forced-colors-mode-14.html [ Failure ]
@@ -1707,28 +1683,19 @@
 crbug.com/346473 virtual/mouseevent_fractional/fast/events/drag-on-mouse-move-cancelled.html [ Failure ]
 crbug.com/982194 virtual/mouseevent_fractional/fast/events/event-on-culled-inline-with-pseudo.html [ Failure ]
 crbug.com/982194 virtual/mouseevent_fractional/fast/events/mouse-relative-position.html [ Failure ]
-crbug.com/982194 virtual/mouseevent_fractional/fast/events/pointerevents/mouse-node-remove.html [ Failure Pass ]
-crbug.com/982194 virtual/mouseevent_fractional/fast/events/pointerevents/mouse-pointer-capture-transition-events.html [ Failure Pass ]
-crbug.com/982194 virtual/mouseevent_fractional/fast/events/pointerevents/mouse-pointer-capture.html [ Failure Pass ]
 crbug.com/722212 virtual/mouseevent_fractional/fast/events/pointerevents/mouse-pointer-event-properties.html [ Failure ]
-crbug.com/982194 virtual/mouseevent_fractional/fast/events/pointerevents/mouse-pointer-transition-events.html [ Failure Pass ]
-crbug.com/982194 virtual/mouseevent_fractional/fast/events/pointerevents/mouse-pointer-updown-events.html [ Failure Pass ]
-crbug.com/982194 virtual/mouseevent_fractional/fast/events/pointerevents/touch-capture.html [ Failure Pass ]
-crbug.com/982194 virtual/mouseevent_fractional/fast/events/pointerevents/touch-pointer-events.html [ Failure Pass ]
 crbug.com/982194 virtual/mouseevent_fractional/fast/events/touch/compositor-touch-hit-rects-list-translate.html [ Failure ]
 crbug.com/591099 virtual/mouseevent_fractional/fast/events/touch/compositor-touch-hit-rects.html [ Failure ]
 crbug.com/874695 virtual/mouseevent_fractional/fast/events/touch/gesture/gesture-click.html [ Pass ]
-crbug.com/982194 virtual/mouseevent_fractional/fast/events/touch/gesture/gesture-tap-mouse-events-between-frames.html [ Failure Pass ]
-crbug.com/982194 virtual/mouseevent_fractional/fast/events/touch/gesture/gesture-tap-mouse-events.html [ Failure Pass ]
 crbug.com/874695 virtual/mouseevent_fractional/fast/events/touch/touch-slider-no-js-touch-listener.html [ Pass ]
 crbug.com/779170 virtual/mouseevent_fractional/fast/events/zoom-dblclick.html [ Failure ]
 crbug.com/982194 virtual/not-site-per-process/http/tests/devtools/debugger/fetch-breakpoints.js [ Timeout ]
-crbug.com/982194 virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/background-image-alpha.https.html [ Pass ]
+crbug.com/982194 virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/background-image-alpha.https.html [ Failure Pass ]
 crbug.com/982194 virtual/off-main-thread-css-paint/external/wpt/css/css-paint-api/invalid-image-pending-script.https.html [ Pass ]
 crbug.com/982194 virtual/omt-worker-fetch/external/wpt/fetch/metadata/sec-fetch-dest/frame.tentative.https.sub.html [ Timeout ]
 crbug.com/982194 virtual/omt-worker-fetch/external/wpt/fetch/metadata/sec-fetch-dest/iframe.tentative.https.sub.html [ Timeout ]
 crbug.com/982194 virtual/omt-worker-fetch/external/wpt/fetch/metadata/sec-fetch-dest/window-open.tentative.https.sub.html [ Timeout ]
-crbug.com/982194 virtual/prefer_compositing_to_lcd_text/compositing/overflow/composited-scroll-with-fractional-translation.html [ Failure ]
+crbug.com/982194 virtual/prefer_compositing_to_lcd_text/compositing/overflow/composited-scroll-with-fractional-translation.html [ Failure Pass ]
 crbug.com/982194 virtual/prefer_compositing_to_lcd_text/scrollbars/hidden-scrollbars-invisible.html [ Failure ]
 crbug.com/982194 virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbar-over-child-layer-nested-2.html [ Failure ]
 crbug.com/982194 virtual/prefer_compositing_to_lcd_text/scrollbars/overlay-scrollbar-over-child-layer-nested.html [ Failure ]
@@ -1742,12 +1709,10 @@
 crbug.com/982194 virtual/scalefactor200/fast/hidpi/static/pointerevents/pointerevent_touch-adjustment_click_target.html [ Pass ]
 crbug.com/982194 virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi.html [ Failure ]
 crbug.com/982194 virtual/scalefactor200withoutzoom/external/wpt/largest-contentful-paint/first-paint-equals-lcp-text.html [ Failure Pass ]
-crbug.com/982194 virtual/scroll_customization/fast/events/touch/gesture/gesture-tap-mouse-events-between-frames.html [ Failure Pass ]
-crbug.com/982194 virtual/scroll_customization/fast/events/touch/gesture/gesture-tap-mouse-events.html [ Failure Pass ]
 crbug.com/982194 virtual/speech-with-unified-autoplay/external/wpt/speech-api/SpeechSynthesis-speak-without-activation-fails.tentative.html [ Pass ]
 crbug.com/982194 virtual/stable/media/stable/video-object-fit-stable.html [ Failure Pass ]
 crbug.com/874695 virtual/sxg-with-network-service/http/tests/devtools/sxg/sxg-disable-cache.js [ Pass ]
-crbug.com/851363 virtual/sxg-with-network-service/http/tests/devtools/sxg/sxg-prefetch-fail.js [ Failure Pass ]
+crbug.com/851363 virtual/sxg-with-network-service/http/tests/devtools/sxg/sxg-prefetch-fail.js [ Pass ]
 crbug.com/851363 virtual/sxg-with-network-service/http/tests/devtools/sxg/sxg-prefetch.js [ Failure Pass ]
 crbug.com/982194 virtual/text-antialias/font-format-support-color-cff2-vertical.html [ Failure ]
 crbug.com/982194 virtual/text-antialias/remove-zero-length-run.html [ Failure ]
@@ -1771,7 +1736,6 @@
 crbug.com/982194 virtual/web-components-v0-disabled/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-with-before-style.html [ Failure ]
 crbug.com/982194 virtual/web-components-v0-disabled/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-with-first-letter-style.html [ Failure ]
 crbug.com/982194 virtual/web-components-v0-disabled/fast/dom/Document/CaretRangeFromPoint/replace-element.html [ Failure ]
-crbug.com/982194 virtual/web-components-v0-disabled/fast/dom/elementsFromPoint/elementsFromPoint-simple.html [ Failure Pass ]
 crbug.com/982194 virtual/web-components-v0-disabled/fast/dom/nodesFromRect/nodesFromRect-child-frame-content.html [ Failure ]
 crbug.com/982194 virtual/web-components-v0-disabled/fast/dom/nodesFromRect/nodesFromRect-culled-inlines-between-silblings-bidi.html [ Failure ]
 crbug.com/982194 virtual/web-components-v0-disabled/fast/dom/nodesFromRect/nodesFromRect-embedded-frame-content.html [ Failure ]
diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations
index 1eb799c..de81f61 100644
--- a/third_party/blink/web_tests/TestExpectations
+++ b/third_party/blink/web_tests/TestExpectations
@@ -1457,17 +1457,10 @@
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-bar-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-bar-002.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-color-001.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-color-002.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-created-dynamically-2.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-created-dynamically-3.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-created-dynamically.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-default-padding.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-legacy-bevelled-attribute.tentative.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-linethickness-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-linethickness-002.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-linethickness-003.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-linethickness-004.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-mrow-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-numalign-denomalign-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-parameters-1.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-parameters-2.html [ Failure ]
@@ -1477,7 +1470,6 @@
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-004.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-005.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-parameters-gap-006.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/fractions/frac-visibility-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/menclose/legacy-menclose-radical-notation.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/mrow/inferred-mrow-baseline.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/mrow/inferred-mrow-stretchy.html [ Failure ]
@@ -1516,7 +1508,6 @@
 crbug.com/6606 external/wpt/mathml/presentation-markup/scripts/underover-parameters-2.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/scripts/underover-parameters-3.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/scripts/underover-parameters-4.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/presentation-markup/spaces/mspace-children.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/spaces/space-1.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/spaces/space-2.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/spaces/space-like-001.html [ Failure ]
@@ -1527,19 +1518,16 @@
 crbug.com/6606 external/wpt/mathml/presentation-markup/tables/table-axis-height.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/presentation-markup/tokens/ms-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/attribute-mapping-002.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/relations/css-styling/color-002.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/color-003.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/color-004.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/display-1.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/displaystyle-011.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/displaystyle-012.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/displaystyle-013.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/relations/css-styling/displaystyle-014.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/displaystyle-015.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/displaystyle-1.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/displaystyle-2.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/ignored-properties-001.html [ Failure Timeout ]
-crbug.com/6606 external/wpt/mathml/relations/css-styling/lengths-1.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/lengths-2.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/mathvariant-auto.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/mathvariant-bold-fraktur.html [ Failure ]
@@ -1566,8 +1554,6 @@
 crbug.com/6606 external/wpt/mathml/relations/css-styling/padding-border-margin/margin-002.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/padding-border-margin/padding-001.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/padding-border-margin/padding-002.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/relations/css-styling/padding-border-margin/padding-border-margin-001.html [ Failure ]
-crbug.com/6606 external/wpt/mathml/relations/css-styling/visibility-002.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/visibility-003.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/visibility-004.html [ Failure ]
 crbug.com/6606 external/wpt/mathml/relations/css-styling/width-height-001.html [ Failure ]
@@ -2799,7 +2785,7 @@
 crbug.com/641245 external/wpt/css/motion/offset-path-ray-contain-005.html [ Failure ]
 
 # ====== New tests from wpt-importer added here ======
-crbug.com/626703 [ Mac10.11 ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-animation.html [ Failure ]
+crbug.com/626703 [ Mac ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-animation.html [ Failure ]
 crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-canvas-parent.html [ Failure ]
 crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-canvas-sibling.html [ Failure ]
 crbug.com/626703 [ Linux ] external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-border-radius.html [ Failure ]
@@ -4586,6 +4572,7 @@
 crbug.com/689781 [ Mac ] http/tests/media/media-source/mediasource-duration.html [ Failure Pass ]
 crbug.com/689781 [ Win ] virtual/audio-service/http/tests/media/media-source/mediasource-duration.html [ Failure Pass ]
 crbug.com/689781 [ Mac ] virtual/audio-service/http/tests/media/media-source/mediasource-duration.html [ Failure Pass ]
+crbug.com/1043450 [ Linux ] virtual/audio-service/http/tests/media/media-source/mediasource-duration.html [ Failure Pass ]
 
 crbug.com/681468 fast/forms/suggestion-picker/date-suggestion-picker-appearance-zoom125.html [ Failure Pass ]
 crbug.com/681468 fast/forms/suggestion-picker/date-suggestion-picker-appearance-zoom200.html [ Failure Pass ]
@@ -5392,7 +5379,6 @@
 crbug.com/911782 [ Mac ] paint/invalidation/forms/submit-focus-by-mouse-then-keydown.html [ Pass Failure ]
 
 # Sheriff 2018-12-06
-crbug.com/912793 http/tests/devtools/sources/debugger-breakpoints/restore-locations-for-breakpoint-with-broken-source-map.js [ Pass Failure ]
 crbug.com/912793 crbug.com/899087 virtual/android/fullscreen/full-screen-iframe-allowed-video.html [ Crash Pass Failure Timeout ]
 
 # Sheriff 2018-12-07
@@ -6337,6 +6323,9 @@
 # Disable for landing devtools changes
 crbug.com/1006759 http/tests/devtools/console/argument-hints.js [ Pass Failure ]
 
+# Disable for landing devtools changes
+crbug.com/1010534 http/tests/devtools/profiler/agents-disabled-check.js [ Pass Failure ]
+
 # Failing origin trial for css proeprties test
 crbug.com/1041993 http/tests/origin_trials/sample-api-script-added-after-css-declaration.html [ Failure ]
 virtual/omt-worker-fetch/http/tests/origin_trials/sample-api-script-added-after-css-declaration.html [ Failure ]
@@ -6394,3 +6383,8 @@
 # The transformed region bleeds into the foreground with SkiaRenderer enabled.
 crbug.com/1044032 [ Linux ] css3/filters/backdrop-filter-transform.html [ Failure ]
 crbug.com/1044032 [ Linux ] virtual/scalefactor200/css3/filters/backdrop-filter-transform.html [ Failure ]
+
+# Required to land DevTools change
+crbug.com/106759 http/tests/devtools/command-line-api-inspect.js [ Pass Failure ]
+crbug.com/106759 http/tests/devtools/sources/debugger-breakpoints/restore-locations-for-breakpoint-with-broken-source-map.js [ Pass Failure ]
+crbug.com/106759 http/tests/devtools/sources/debugger-console/debugger-command-line-api.js [ Pass Failure ]
diff --git a/third_party/blink/web_tests/WPTOverrideExpectations b/third_party/blink/web_tests/WPTOverrideExpectations
index 07fc360..30da172 100644
--- a/third_party/blink/web_tests/WPTOverrideExpectations
+++ b/third_party/blink/web_tests/WPTOverrideExpectations
@@ -848,6 +848,7 @@
 # ---
 # Reftest with pixel diff. Fails locally. Fails on wpt.fyi
 external/wpt/compat/webkit-box-rtl-flex.html [ Failure ]
+external/wpt/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-scroll.html [ Failure ]
 external/wpt/css/css-fonts/font-display/font-display-change.html [ Failure ]
 external/wpt/css/css-layout-api/fallback-layout/constructor-error.https.html [ Failure ]
 external/wpt/mathml/presentation-markup/direction/direction-007.html [ Failure ]
diff --git a/third_party/blink/web_tests/animations/svg/css-composite-animation-affects-use-elements.html b/third_party/blink/web_tests/animations/svg/css-composite-animation-affects-use-elements.html
index 514bc107..315472b8 100644
--- a/third_party/blink/web_tests/animations/svg/css-composite-animation-affects-use-elements.html
+++ b/third_party/blink/web_tests/animations/svg/css-composite-animation-affects-use-elements.html
@@ -19,6 +19,6 @@
     target.animate([
       {'x': '20px', composite: 'add'},
       {'x': '20px', composite: 'add'}
-    ], {fill: 'forwards'});
+    ], {fill: 'forwards'}).persist();
 }, true);
 </script>
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_7.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_7.json
index 5eed2a3..39e92475 100644
--- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_7.json
+++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_7.json
@@ -44427,6 +44427,18 @@
      {}
     ]
    ],
+   "css/css-flexbox/dynamic-change-simplified-layout-002.html": [
+    [
+     "css/css-flexbox/dynamic-change-simplified-layout-002.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-flexbox/dynamic-change-simplified-layout.html": [
     [
      "css/css-flexbox/dynamic-change-simplified-layout.html",
@@ -48495,6 +48507,18 @@
      {}
     ]
    ],
+   "css/css-flexbox/percentage-heights-010.html": [
+    [
+     "css/css-flexbox/percentage-heights-010.html",
+     [
+      [
+       "/css/reference/ref-filled-green-100px-square.xht",
+       "=="
+      ]
+     ],
+     {}
+    ]
+   ],
    "css/css-flexbox/percentage-size-subitems-001.html": [
     [
      "css/css-flexbox/percentage-size-subitems-001.html",
@@ -154219,6 +154243,9 @@
    "css/cssom-view/META.yml": [
     []
    ],
+   "css/cssom-view/MediaQueryList-addListener-handleEvent-expected.txt": [
+    []
+   ],
    "css/cssom-view/MediaQueryList-addListener-removeListener-expected.txt": [
     []
    ],
@@ -169360,9 +169387,6 @@
    "interfaces/css-pseudo.idl": [
     []
    ],
-   "interfaces/css-regions.idl": [
-    []
-   ],
    "interfaces/css-shadow-parts.idl": [
     []
    ],
@@ -169489,6 +169513,9 @@
    "interfaces/mst-content-hint.idl": [
     []
    ],
+   "interfaces/native-file-system.idl": [
+    []
+   ],
    "interfaces/navigation-timing.idl": [
     []
    ],
@@ -172675,6 +172702,579 @@
    "quirks/unitless-length/support/common.js": [
     []
    ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers": [
+    []
+   ],
    "referrer-policy/4K+1/generic/spec_json.js": [
     []
    ],
@@ -172684,6 +173284,579 @@
    "referrer-policy/4K+1/spec.src.json": [
     []
    ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers": [
+    []
+   ],
    "referrer-policy/4K-1/generic/spec_json.js": [
     []
    ],
@@ -172693,6 +173866,579 @@
    "referrer-policy/4K-1/spec.src.json": [
     []
    ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers": [
+    []
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers": [
+    []
+   ],
    "referrer-policy/4K/generic/spec_json.js": [
     []
    ],
@@ -186376,9 +188122,6 @@
    "workers/constructors/SharedWorker/undefined": [
     []
    ],
-   "workers/constructors/SharedWorker/undefined-arguments-expected.txt": [
-    []
-   ],
    "workers/constructors/SharedWorker/undefined.headers": [
     []
    ],
@@ -186661,6 +188404,9 @@
    "workers/modules/resources/export-on-static-import-script.js.headers": [
     []
    ],
+   "workers/modules/resources/import-meta-url-export.js": [
+    []
+   ],
    "workers/modules/resources/import-meta-url-worker.js": [
     []
    ],
@@ -186709,6 +188455,9 @@
    "workers/modules/resources/static-import-worker.js": [
     []
    ],
+   "workers/modules/shared-worker-import-meta-expected.txt": [
+    []
+   ],
    "workers/non-automated/application-cache-dedicated.html": [
     []
    ],
@@ -271930,6 +273679,38 @@
      }
     ]
    ],
+   "native-file-system/idlharness.https.any.js": [
+    [
+     "native-file-system/idlharness.https.any.html",
+     {
+      "script_metadata": [
+       [
+        "script",
+        "/resources/WebIDLParser.js"
+       ],
+       [
+        "script",
+        "/resources/idlharness.js"
+       ]
+      ]
+     }
+    ],
+    [
+     "native-file-system/idlharness.https.any.worker.html",
+     {
+      "script_metadata": [
+       [
+        "script",
+        "/resources/WebIDLParser.js"
+       ],
+       [
+        "script",
+        "/resources/idlharness.js"
+       ]
+      ]
+     }
+    ]
+   ],
    "native-file-system/opaque-origin.https.window.js": [
     [
      "native-file-system/opaque-origin.https.window.html",
@@ -283208,9 +284989,9 @@
      {}
     ]
    ],
-   "payment-request/onpaymentmenthodchange-attribute.https.html": [
+   "payment-request/onpaymentmethodchange-attribute.https.html": [
     [
-     "payment-request/onpaymentmenthodchange-attribute.https.html",
+     "payment-request/onpaymentmethodchange-attribute.https.html",
      {}
     ]
    ],
@@ -285290,6 +287071,9402 @@
      {}
     ]
    ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/fetch/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/fetch/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/fetch/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/fetch/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/fetch/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/fetch/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/fetch/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/fetch/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/fetch/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/fetch/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/fetch/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/fetch/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/xhr/same-http.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/xhr/same-http.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/xhr/same-http.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/xhr/same-http.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/xhr/same-http.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/xhr/same-http.swap-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/xhr/same-https.keep-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/xhr/same-https.keep-origin.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/xhr/same-https.no-redirect.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/xhr/same-https.no-redirect.http.html",
+     {}
+    ]
+   ],
+   "referrer-policy/4K/gen/top.meta/unset/xhr/same-https.swap-origin.http.html": [
+    [
+     "referrer-policy/4K/gen/top.meta/unset/xhr/same-https.swap-origin.http.html",
+     {}
+    ]
+   ],
    "referrer-policy/css-integration/child-css/external-import-stylesheet.html": [
     [
      "referrer-policy/css-integration/child-css/external-import-stylesheet.html",
@@ -331484,6 +342661,12 @@
      {}
     ]
    ],
+   "workers/modules/shared-worker-import-meta.html": [
+    [
+     "workers/modules/shared-worker-import-meta.html",
+     {}
+    ]
+   ],
    "workers/modules/shared-worker-import.any.js": [
     [
      "workers/modules/shared-worker-import.any.html",
@@ -355073,7 +366256,7 @@
    "testharness"
   ],
   "cookie-store/cookieStoreManager_getSubscriptions_multiple.tentative.https.any.js": [
-   "625f521261507b0c82d5e059f40537f84dfee4c8",
+   "030297e4095efded911308a5de13ae1abad345de",
    "testharness"
   ],
   "cookie-store/cookieStoreManager_getSubscriptions_single.tentative.https.any.js": [
@@ -381712,6 +392895,10 @@
    "7148f26e2770b669dfcc69435e3a506882ffd457",
    "reftest"
   ],
+  "css/css-flexbox/dynamic-change-simplified-layout-002.html": [
+   "d419bb3c700cd18b972a741fe0a03454445b80a4",
+   "reftest"
+  ],
   "css/css-flexbox/dynamic-change-simplified-layout.html": [
    "5d15e22c5eba93488c8e6e667b61306669c32026",
    "reftest"
@@ -384376,6 +395563,10 @@
    "b3de59562bc1ff6b78d9c7b29a5836d47bf8a81b",
    "reftest"
   ],
+  "css/css-flexbox/percentage-heights-010.html": [
+   "003cc2487ae56d0172c9253be663b5c3dfdf83ff",
+   "reftest"
+  ],
   "css/css-flexbox/percentage-padding-001.html": [
    "8bba5d60f5cae1b93df70c1973a473f163020a51",
    "testharness"
@@ -435192,8 +446383,12 @@
    "a6644945910fc83ca079c93507b21117b91de9c3",
    "support"
   ],
+  "css/cssom-view/MediaQueryList-addListener-handleEvent-expected.txt": [
+   "ed09e420a658bef5720424c9637a9ab291f65a22",
+   "support"
+  ],
   "css/cssom-view/MediaQueryList-addListener-handleEvent.html": [
-   "5bdd9dfc9ced8459b459970cf187456c3f82fbe4",
+   "47267d98bbaf66e07ee0e2ef3e37d01231d03f12",
    "testharness"
   ],
   "css/cssom-view/MediaQueryList-addListener-removeListener-expected.txt": [
@@ -446457,11 +457652,11 @@
    "testharness"
   ],
   "dom/events/EventListener-handleEvent-expected.txt": [
-   "ee188fd998810a6b4b6f2ea6230fd4c32abe91f3",
+   "bb076e74f458f8aa89855d42ef845b55b2ccb354",
    "support"
   ],
   "dom/events/EventListener-handleEvent.html": [
-   "1eb80ccb15f0bc6fda7d04d4fc01555ea6b8ab04",
+   "27730b20c584dab38b95baecc5c3b8ae459f491c",
    "testharness"
   ],
   "dom/events/EventListener-incumbent-global-1.sub.html": [
@@ -454493,7 +465688,7 @@
    "testharness"
   ],
   "fetch/corb/script-resource-with-nonsniffable-types.tentative.sub.html": [
-   "917e54984f460fc1f5a9c13c9ae4520492e17355",
+   "255ff1da267af5a3fead4ad3f94584d70d9bdf4f",
    "testharness"
   ],
   "fetch/corb/style-css-mislabeled-as-html-nosniff.sub.html": [
@@ -479329,7 +490524,7 @@
    "support"
   ],
   "interfaces/IndexedDB.idl": [
-   "33925d614238d6850c196381df0f60ac14bd4e4f",
+   "a66a245466ecb166836df87b50424a5f5c23de35",
    "support"
   ],
   "interfaces/InputDeviceCapabilities.idl": [
@@ -479468,10 +490663,6 @@
    "2b557e653163863feffa05d3f4a4e961142aa944",
    "support"
   ],
-  "interfaces/css-regions.idl": [
-   "f7cf3d31a114a653734990ef081ac109478dfcd8",
-   "support"
-  ],
   "interfaces/css-shadow-parts.idl": [
    "66aaeba73a7a62280171ea1765915991b9da1ba3",
    "support"
@@ -479640,6 +490831,10 @@
    "f7d3f20e72364a1bf7df019e3115c34c10d811ba",
    "support"
   ],
+  "interfaces/native-file-system.idl": [
+   "f4679175c46ec7831f0c6423b0075d95ab99dbe0",
+   "support"
+  ],
   "interfaces/navigation-timing.idl": [
    "57cea306d9e3b50b269587444ecf4c5190e15de4",
    "support"
@@ -479937,7 +491132,7 @@
    "testharness"
   ],
   "intersection-observer/document-scrolling-element-root.html": [
-   "9996299312c996f3705af12e35c6eab088905047",
+   "443ff2ed85f988c66459952ce468bbcf14fdf2e2",
    "testharness"
   ],
   "intersection-observer/edge-inclusive-intersection.html": [
@@ -480621,7 +491816,7 @@
    "testharness"
   ],
   "lint.whitelist": [
-   "1b102e4e03cc42f9b3d9774ed3ebbc42ede82c7f",
+   "e428d2f4f1911d93cfdfde2f1a924b08d32e8ea8",
    "support"
   ],
   "loading/lazyload/META.yml": [
@@ -486196,6 +497391,10 @@
    "6905a68e7901ce26bc1a363062304e1536604400",
    "support"
   ],
+  "native-file-system/idlharness.https.any.js": [
+   "567912ddd7788b871b00a2929f17dc47280dd2d7",
+   "testharness"
+  ],
   "native-file-system/native_FileSystemBaseHandle-postMessage-BroadcastChannel-manual.https.tentative.html": [
    "322b169985bf40e2bac1dba813e840e951f89414",
    "manual"
@@ -494464,7 +505663,7 @@
    "d31ac2dd72abcf51a28ecec850400f5f0c6b9bb5",
    "testharness"
   ],
-  "payment-request/onpaymentmenthodchange-attribute.https.html": [
+  "payment-request/onpaymentmethodchange-attribute.https.html": [
    "f641bec4aa91d8be4f1801869eb699ca4bad03a0",
    "testharness"
   ],
@@ -496416,6 +507615,2858 @@
    "f2f7eab4e33858b571344940c67de9b50e18e119",
    "support"
   ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html": [
+   "4c3802dae79f69e6c16e6b996d6f7ba62a296a23",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html": [
+   "d394bd1e4e2d6391d03eb9d627429288ea9dc29e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html": [
+   "85ca63d1470a18b558e6fff236ac6a064d0b4940",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html": [
+   "a05223441ae201fe70e51c9438d573698be291d6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html": [
+   "080260e7d461cd90aefbe53ce33bc06b014f7aec",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html": [
+   "142fe0c1344d2d161332cc09f3d6ff4b6b4bdd3e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html": [
+   "68b6b4796d37b9deb85aeb560b56b760a432f3a3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html": [
+   "95991260cc3f9330debb07b009c61c9d4fc0dc27",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html": [
+   "143b92c3e942693e0f35358b13e3f29419a9c75a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html": [
+   "caccf277e487916ea2be504c554e77461b404604",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html": [
+   "ff2b557f1a58455ecfcd56d8526b437c2dafea28",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html": [
+   "361752465e15bd9726c050b556d1ac196e6a2c61",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html": [
+   "b313e1b8cf015a8e1b44a728a505887be5f08cd0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html": [
+   "2bfdf1f966fecfa8b2cf3d2d47281b47e726bab2",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html": [
+   "15949d8d11f14b3ddb937996542c612ae30b18e1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html": [
+   "05b2a3d68eba34cca41a37efd6bf71d2b95bee7a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html": [
+   "c3b6f6c7c7f9707c76f7825032565859f5d90794",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html": [
+   "e83bf31950db7794494acac2fd71a8ea401b38fc",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html": [
+   "35a96050dc61e4955cf58679b13d3605c143e336",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html": [
+   "3d04cad1f380598e22ca618c656a4df58f0162e3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html": [
+   "30577195c98cc139adde5bdfb8800214b329bf93",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html": [
+   "cf51c1e72a106070611a7e716edbe453669e864d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html": [
+   "d817ec4dd12976b79a3a002fa7dac18a6fdd9858",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html": [
+   "72df66720b102ffc56848101c9075679cdee6b16",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html": [
+   "43761121a3c076d8358e6a55ccc5c31bbb0bc8b6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html": [
+   "edf6ad13a05c5c7e7cdc7d49c68b604e963bce58",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html": [
+   "0a3c40a408eefb57844247bda94cf574c6c4673f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html": [
+   "9d4b569cdf4eac1e259614e6683a4b8079f98bc8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html": [
+   "42d3078838139cccfed2e507feeaaa52f6e1877b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html": [
+   "c172ab34c71496fc747ce57541b480fd2f3e97f7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html": [
+   "211188643b0802b328071146bccbdacdf2cb78f6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html": [
+   "774fc69efe72c59ad2d0439b1ffb2dfbc9ec76bf",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html": [
+   "a8590f135b3eaeda0152f875eede2107ec561c1d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html": [
+   "acb73e754ce83fa83b0fd3ace2054326b466be8d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html": [
+   "460e2460525d70cacb63d55f68c923b70adb176a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html": [
+   "2dbf501e7883d238bfb50ed56062aff2ad643135",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html": [
+   "1eb93554227c4ca789b570664e37bd9c110f48f8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html": [
+   "f28f6a8c9ecbab04e6286268df52f0c3512b2bed",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html": [
+   "d052d0452390ce7f04a5b67d4649af7bb85eae2f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html": [
+   "a21305652928b2e3c5b118ceae3f23ddbe7df0a6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html": [
+   "9dd49623438c031c4d82dfa8fc2963b9fbedf235",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html": [
+   "58fb3efe76a188b88cb6f075858c29ca34efa8d9",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html": [
+   "a351c338b6a186731f2ba833a84808edb29a52ee",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html": [
+   "0741ca04100eea706072384acc71cbff5ce679d6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html": [
+   "841e31754225483aa2e0e5f0b1cbed7c022b3f42",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html": [
+   "69fdbcb10584dda4a4d3221419115b0279631c65",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html": [
+   "e47f4ff801bf11e11e081f909e4363f7c946dcbc",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html": [
+   "1222252b6a423161b261ac86cd4dbf455122d4ed",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html": [
+   "4ecc3367b639b7cce310769c99a3f7ffd746444c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html": [
+   "4f6a3571834a7ffd2b97aec3ca3122f8ad2335eb",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html": [
+   "395db421847b03364298a7ce04fca1d7e0079053",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html": [
+   "ec9da8a2a02132f79eb7499ae98a559ffa87f170",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html": [
+   "79e00866ba6bc75a6f412668b8bbd4e417ddf147",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html": [
+   "2637d13d36c792017f31815fcd3a6b153a51b0e3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html": [
+   "3e5b298f86fb960cb4136cacd23b49bfccbbd189",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html": [
+   "c71ca117226d6afa8aacb1428bad863f3c73cd6d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html": [
+   "af90b554010a050bbc61bea0d93b414237599118",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html": [
+   "9cf74fd7e0d4de649fa731cba27f47be01df1992",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html": [
+   "3f8822828b579ec7254b2583ffbaef9831bd5d3d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html": [
+   "de626c259d0aa645da56ab7871ad30f582394ca5",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html": [
+   "608802389c84355063eaf32f786b67407cf7b2a0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html": [
+   "481f3a25060bd9686c2a53b1326465083cb0eac8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html": [
+   "4914ed183aec2b8fa2f19b1c7b17734889ed2e9c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html": [
+   "5248a244a400c02ab3a57b2abae7d7e5577413ed",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html": [
+   "4371218111e9db332c1ee5b6bdafe658d2fcc95a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html": [
+   "68a6e853aba51c60b6e3f810ca220eb54b93a408",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html": [
+   "b0ef51f4d74f21e88c5a472dd4030c9956a675b5",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html": [
+   "5bdb3f44dada0be97e7abf0e1d2e4814e9bb34fd",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html": [
+   "64f40b9ac99ec485e0d416512a222dd8f0b0102d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html": [
+   "49b21a9aaf9273deffcc06265fe4f80b41272092",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+   "0e68ad23e60e60577849aae66c6e7c445a002aa5",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+   "d45ec515a50f02e261aa4481bfa654b12a172f0f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+   "efa73828287306d2e13a1bf186bee5aaa429c205",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "1e17c7be9c6e4b2b350d26c57d26ea464f308703",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "44f55bc82b81971fdb7dd0fde481dfe7bc6a4449",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+   "11d28f2b7b2b8dbdf3bfedceb6ef5db20e34d34e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+   "8eb728b6883ee20466817f6c31fb298c2b31c70b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+   "fb4e67dbce83d94971e3b44620eb2f9c09ef1d0a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+   "a2f1b18267e0b14832c86f87998f8c81ca9033de",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "d0ebc66aa5f560bba3434e365ab82970ff82558a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "a6a7f916ec3b2072f9d78617837ac2ad5232a937",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+   "97172fc6af43a3c2dba155f7bc1b8042d9792a56",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+   "fb5e75f474691b7acf0a2b4109fbfc67d98606dc",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+   "fcc3079d1c0a541180b9c94a9527a292b170dc06",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+   "d24f65ca2e93c9de1c1ce8dc2d64334ee7afd180",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+   "b20fac55fada6eee40d46c5a0d78de87ca5b741b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+   "00624e1b0c3490eeae7ed8e6877351f93917961d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html": [
+   "89c786406871910f1f961bbcfef139766a6da79a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html": [
+   "e23fa374b4668ea14850285bcdc8eb6d8d7635bf",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html": [
+   "4325995f1cb0b8c62369ce209597e2b022fe7f9f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "218bc1ae9c8667cee0d94e7f4331be63225473e5",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "f5b8b464b8a45f520a2272420dbb4f31154e9381",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html": [
+   "10227f715433ca3d523ddd9115d2a6b9cf0a8ba5",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html": [
+   "70b830df152ec028b5ccf9990bcb84b4d4ff484b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html": [
+   "cc96f816cab693c7df0037b8c9635d474cd1c82e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html": [
+   "c96b1a3bd2b55d0e86ccb7634ed5e36d096edd73",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "32fa5eb0be05d36e3d8c756933058d2c74713e31",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "8a3a657822bc09fc9b92e001d25560526724f116",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html": [
+   "96195c261f184d488ee49b497495369c3193b843",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html": [
+   "ea6022df1abba0adc40491249dcfb0e0636e0abe",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html": [
+   "af7c40febec936a90df52d7d4b34b9009a701fcb",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html": [
+   "781a8d446c67cb06b9051a58f8e848bb29308ea6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html": [
+   "f0dc7c38ce1451edb0913e46c6739d4792b830ef",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html": [
+   "683b8b5ca96d11a504e0f4537fe1534b6c8498e1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+   "edffa0f3aceb67a52d0e47acfa8da406e314932e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+   "5083fe37990a48f765031b5629fdf9627f8d7f94",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+   "064e09bd7ec1a3083a4176fc49b9eafee9d644c6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "d31d03a8071858829bdc6db1efe52c7f722d895f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "8f1c4717df9ecc654e192c2a01ed0d3a536cd4b6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+   "2d8fe73002f959f4ec31a2bc8bb44c3be90f30c9",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+   "0693a8f3fcb3f79931bb88e52d854a8241f28a46",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+   "311bd13bf45cc9a1f6406371fabe67c53815da88",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+   "2249c1a161d18a75ddea77d946b93678a3cce9e4",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "f0544a560113ac6da71523889bdff44b78cae340",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "eb5ed99ebef3430c45a17a9137df458f70f09534",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+   "2dc5249838490c7fd579da37b3d02f0801a37587",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+   "d8f11e5abb492c07dae2c7d9987f9a0ed3d980fe",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+   "77e969c673fac7cd602ef64581d937eb9141baf0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+   "7ce3088cbdac3a86a68b9980a57ece1b9863b3f3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+   "d6702e6fe448339bb6cc88da033608aefa058a9a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+   "ea3e7b68f4484ee28f78eadbb43e35745868771b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html": [
+   "3d23c2969343611bf390f8446800c80d0d96b115",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html": [
+   "92dc5c757648e083592c6167badbce85391f225e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html": [
+   "dcab0bfa8626204c6e82f7bc7c3dc5a2d747159a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html": [
+   "064250efda3a6058bd33790317da4be4184a8aa2",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html": [
+   "a804d60f9379662ff24d0ae84963dc62823d29b2",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html": [
+   "99e306b5f5f3872accbe55162d45fcda979dd426",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html": [
+   "db0e25e6c3b513a2dd6a94683bcb20ac78612d65",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html": [
+   "03f565a69be01f8c4fec80b88a42f7667dade811",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html": [
+   "726c8d7f140f1cb3e56482d781267a8d4f226b97",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html": [
+   "a88cb365519b150cec9967ed1772dc9b08f9319c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html": [
+   "43c875becbc65c1ac4b8fbf64e1daa923cd00a6b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html": [
+   "a5aacc5bde49189f46075f27067e695482f50009",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html": [
+   "e8e550e70b5de0335a62e94309967c75540871ae",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html": [
+   "a975e0afe22c8c91883f88f827524b1c0c5c0162",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html": [
+   "7b4b354e222e4af3d06a6f3b9c96da8d8a22497d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html": [
+   "019586e19b8b17dbedffe3564f8edeeb2999d55b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html": [
+   "83a5347eec7a8f6dfa9b9d62abc09c05bcc1f78f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html": [
+   "83175ed9536931877326c80fee4fe25fcea59f0b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html": [
+   "ad0d2ea3aa8f1c9e29ad2b8c00302749ae24e6a3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html": [
+   "9682e79855da592b709d48e88bad59a47fc332a6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html": [
+   "4e6c295b183b639d29cd933bf9751d9eea0fcd0c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html": [
+   "e21471beb3bc4360e56165737c993fcc0e6b729f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html": [
+   "31a5606e98ddd552b6bb8ac6958bd411d54cdc74",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html": [
+   "7d8bcd93218d1cc6f28121711b5c5f82298158d0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html": [
+   "62bdb36df8a3e4c9310b7ac66e76b7995b2e45e5",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html": [
+   "33058b7004cd68d955df588da5b7e53e438bf20d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html": [
+   "60ade0b6a2a1cccce4c3adda2bf65f02f5dfdeac",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html": [
+   "c3c99c95461ef5368450fa6cf7f0bfb0416fa03b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html": [
+   "b94df6fa4386e0e783e67ed634542742fc70e956",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html": [
+   "8986821f7f2e7a6d0d3a0a5c9e838a790f4f0272",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html": [
+   "464b20c87ab1be4b381a2df15a28944924739e43",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html": [
+   "64d312c68e5456b61fceee49a98a42ebf3c022f2",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html": [
+   "a7a0d8b14ae228b2e1712908bc68f71947f0b2b1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html": [
+   "e34b0f44137b4409b5982fb39440302fc92c1c2c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html": [
+   "e79090f32fdd418ea9326d889fdc1bddf768089d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html": [
+   "6a44f60bd6c25f34b6bdbd22a63605731901f367",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html": [
+   "f5650aee09022aed06ed4b0c59e9e6740c506532",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html": [
+   "f73d530e1899f87deb8f792f36dfc87f53de22fe",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html": [
+   "0bb37b4900d40889cdb1ada15668e0bbd9906829",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html": [
+   "e075d359cf327aba0cd8e5f5c06f2e6f7a3ff655",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html": [
+   "61350037cc230f8dd02ab0995b9bc8d552049ad0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html": [
+   "8f596f55e15d0619b6c8a870dfcd442c217df52c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html": [
+   "658891c390e779ad5dc2c6226fd78e2f1f3da26a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html": [
+   "a2374195345169fd3f101e031fce50a28764c86c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html": [
+   "bf2c352f98e86b80200b196ac4ca3d9af628d227",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html": [
+   "2d0b84962ba285bfc32c2d2c8dc51acd2bf87e98",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html": [
+   "30177b584db77b73dfb7751d9538c34898cfae8c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html": [
+   "dacd57f68ecb22bd64f57296ef3c7a080d686156",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html": [
+   "5f8812e2f432b1009b5f833eeeb1a8f3bea6bba6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html": [
+   "73dbd33dc70b6e44ef3fe9b50d125ce3a6ee8f16",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html": [
+   "8ec9770020196a0925e29e96c453724d3c3fcef3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html": [
+   "047485e38b8cfb28892db7b29ee1f4bc8865bc07",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html": [
+   "64f10038370fd281e3aff141d74ba93ffd7234e2",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html": [
+   "a23d7d20df618fd2fdd544484c7ae27e893b16f1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html": [
+   "cef8fdb5e813ee179dcf1cdd82fbf0b3a4b2a518",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html": [
+   "a3aa1db13f5d18a418175c070ceaed993ee534e2",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html": [
+   "941850e8b6b7399fa782f61e9902a25af1c5a3ed",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html": [
+   "120efba8c365adbbc4978c99d869c87c93d7b7e1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html": [
+   "d460510fdc5658c49176b08365b2732da2c0c7de",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html": [
+   "50cf5378fff2f6acf6db3510352918b8edcc794b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html": [
+   "956d32a212a9bf18947b45de0062821fd6470c9c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html": [
+   "036392abd664e40b7b1d6a177f117e48d16df1c7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html": [
+   "b33893e9336292f2db43865afcaa4086195479a7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html": [
+   "bdd7631581ffbc84bd5c304f38e664f8d3ae8c69",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html": [
+   "b4ef622748bfa15fcc260ffe8a09c2c76b617629",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html": [
+   "b2c8a07785fa7d7b621158045c946ee1e8499a56",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html": [
+   "8dd5eb8630dd2b0b87deb452969c45f153d29758",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html": [
+   "96705247c6ecbc6940b84e11cd0c891e73d55def",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html": [
+   "08b38475ab7c68a9e2c274771ea525831aa20ec0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html": [
+   "e9f0d4950486c31bab1484c6531966ffb96e20f5",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html": [
+   "f88769fd9c0f6978e0444dd35d84280d501843a4",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html": [
+   "a747db8bf19b2f6a74df320479f008d8a862e832",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html": [
+   "6fbdb686a1a4cba4fa0e1d8f42627bae94c00c87",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html": [
+   "a7e3dc518551444aa406bd508c0214974e395aa3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html": [
+   "2a50287c1bb32ff9591aa31ca06976b48d088e8b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html": [
+   "acb2d52a9e09ad3b1c8d71aadb9742c387bbd110",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html": [
+   "8c16c05f1a0af2e03ec60bd06cc464984e3c9cca",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html": [
+   "496d12d647ba6f548f612320180a58582c233089",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html": [
+   "1b0378a367943e73d77d26f92265f585ba300fd3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html": [
+   "00bea0d3a51480a94825505e175dc9cffd35a690",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html": [
+   "ac2686bf311a0554302b904df99fbb0889092bbd",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html": [
+   "0c72b8e9d36a0923f45c9fd582588cae5cad243d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html": [
+   "d6c068b61b8d168a7353f08993e75b8dafd0a707",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html": [
+   "444b3ef22f93b24e2cc1a113b79b3f4f1ff8584e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html": [
+   "4e33ed9551bf6bf312854b8945a8c2fc15adda3a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html": [
+   "d458756330b1e31466742ce816662252c9960392",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html": [
+   "26b3bfd4d0c38b996211dedf4ca724e3cbe388b7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html": [
+   "a0ccb1b05a4b90b741aa8a42bbb5e93182e207c8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html": [
+   "c6445444c0dc1f5113429237098ef3c2bca14849",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html": [
+   "d1f5a4d16aea2dd9406fd1fc63ca6b22a4720a8f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html": [
+   "631165464cda870cb5561c893c51afd214094c47",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html": [
+   "c38aec92be25efb95ae83acdf6e5fdf8f8161f2d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html": [
+   "8dbe6086637901a88591a6691aefcfe9bf8ec275",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html": [
+   "793297d1697d0650734800821c959dec680a4cd9",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html": [
+   "e46888e7dd1ae3d03bb262df6cee378b2c56da67",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html": [
+   "62ce6a414807744e4c20f0f2d3f3350b7cbcdb65",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html": [
+   "6afa660bf9da441fe5a75970abcbb37e77a1a322",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html": [
+   "c32fe9b95d5ade86f1e2a78b71ae353b36af0123",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html": [
+   "e7cbc17b7c169e4ab2ea7143680d4e4c864f9ec0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html": [
+   "7446d6cb7f18d4f587b8d17faa27981ea5383dd7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html": [
+   "1f14c13bc58abd99be093a857e303bef259d304b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html": [
+   "f27f5a9ea8cb556136719475f6034e03088b51eb",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html": [
+   "3fc281e8deb3412f0bf566e67cb1042da83cb605",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html": [
+   "1343e9370ecb4e45795395127e38d5d2a7d77b9b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html": [
+   "aa5a4dda5b0de8bb3db1b424a57060539a4862ae",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html": [
+   "16d6b375c4f3744195181f5b6502e75be9069011",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html": [
+   "d9c21291c9e930663e0790f7d0ef286ed6d61f46",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html": [
+   "f383932ad528165289c0a80c24900e61375ebf56",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html": [
+   "7f0a7900e03b348626c71a5757d8b296eecc6321",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html": [
+   "afef1ce00fbde5556623c788b36435656cb3bc79",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html": [
+   "e0fbedab98315db00c5fac82d9ea545c6fe4043f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html": [
+   "f737d136298086a08d0c152d378270f440f244ed",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html": [
+   "9d94546fe02d7a0bb9c827e88fe8a471234d8960",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html": [
+   "f73a67d4030a7f2f9ffa037a4cbd4fb7527f3911",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html": [
+   "e5329556d40555efff9c6bc1fbd36e3f1caea5cc",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html": [
+   "424154f44e60f8b8b38eec377e01307de0083a99",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html": [
+   "1e0fe60c46c900db52df08b0bd39928fcfc242fc",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html": [
+   "b1c1b2c78921dbeafcb368deeb1ba0e57f8c0a67",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html": [
+   "c6d6679ef334fe5834d6a0944077ccaa6f500559",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html": [
+   "0ec1d0588595d0878bd6f12f66c9f6a63e8e1d27",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html": [
+   "1b5110c28cff65a751da9819b5c51ac84d1d245c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html": [
+   "43e2070ea66e17fee67d781b374bbe8183fc4d52",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html": [
+   "c82ebd1769bbdefdc8b1ffb1da8d319b0c557983",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html": [
+   "79c204fee0a06af19c1ceb046807e6c9f4050704",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html": [
+   "d7f31ea497a922c6bcef93194f4b46a86a7cec97",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html": [
+   "522877903c5f15c29e859c0eeb4ecc71a97d7ea3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html": [
+   "5dc0587fc0a379f1e1c4e0b663883c81267c79d2",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html": [
+   "34fa9f77036447725377d78af862089d540eb377",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html": [
+   "0de1d990786b64403bd7d79f6d7d3699f1811f16",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html": [
+   "ed256fe53d2fbbe0d2d567c70d33fb0c0a2bf2c1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html": [
+   "1a93d1fce387b5d2e6cf6c0b23556b86b2249cf8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html": [
+   "25f197009e65363588c9d8fa9c1aaca79f380adc",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html": [
+   "54c3a070d6180028dfc6731de40f8a7c35fe48b1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html": [
+   "346d4c1ea2aea8054dfc4d55f3ff696dfb39204a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html": [
+   "15e1b94c00d6c9c87d24c055711bbba97a963a36",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html": [
+   "4f7ed37e7b293158e318520ec954b7c14bbb981e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html": [
+   "7fa22ec13e428f8980eb3862ad7a551634d49d06",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html": [
+   "c16b91a511ae074324dde71eed029f4dc56fb31e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html": [
+   "66b00c803854acd9993b0516d57284dee3b41bb8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html": [
+   "536a94590b32476becc9b56d42c397d41e770815",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html": [
+   "7ef3918a8ef5cde799b985a632c5424468e55bfe",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html": [
+   "5b1bf55d659b9fafb896d02c51a60f6ffe01487e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html": [
+   "7c8843bea8ead762bd5982c542870b483e68d8d0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html": [
+   "caa7bc3b5c1fd08e19eb871c869bda1db3d4dd65",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html": [
+   "6e6134809d11f68e5c8c9d8cadd39adb005ad0ec",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html": [
+   "71c7443ee516dd955cee3aeb3d4e19c135f1512f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html": [
+   "b50c96be0e7977e87be2f79a60a082325cefa3a5",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html": [
+   "986de2112fd3a8e7542d05984e18930ead3b2339",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html": [
+   "c6fe553114aeca920f4da3ba24811720581fdbda",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html": [
+   "4cbd4308984179212ec9ae0598e1b93ceb829a74",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html": [
+   "4bbc0305cc93dcf1b79fe8a3e8a04245de95cbcc",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html": [
+   "d3c1792b804e0334e019d2a7f5b6a04ea20eca26",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html": [
+   "a91366efb77238fb125aae5e6b4fc0f03bc952ae",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html": [
+   "00f9d4ff0543054125f1ce04a3ed42a776987b1e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html": [
+   "44c7e6efbc05ea6be5d20a0e3126b057885537ae",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html": [
+   "ff30b9ecf79fd6feb5d04af23c43fae0958cc00b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html": [
+   "775025d2bf3453ef665ddd0c0b28189d2a852f74",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html": [
+   "6eb042c6581377aee95a4ddfe10ac9deb8d625b8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html": [
+   "5fe6c8be51ce32b97e7133bca70e534e0f7cc13d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html": [
+   "00020010b83da90a314f35894c5e594b706b81f8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html": [
+   "47540313d0b99b06de8085ea0deb3cf7b0456b97",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html": [
+   "56552a05ade31ef56831a5b07cab26a6273c4a04",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html": [
+   "59fd3b6e252be54caa6776d2ee0e124aad37a67d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html": [
+   "0ed6e096dc806e5dddbe0acec51989afeb9e311a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html": [
+   "6d9de995d8d463fe3da5611cd3edbc8edf3c5ec1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html": [
+   "b0e2201884d6738f0a34299a5c669fb3de779d78",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html": [
+   "c782e4c7e0b0441c3015c02b3daae272a8c178a4",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html": [
+   "fdd5ecf8f806f997690f8a8934f6690c95fac7ec",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html": [
+   "73566bf3649db00931b133799443871a46d11860",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html": [
+   "1417dc92468ea847ddaee21b57e5dcf605b45006",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html": [
+   "76ba3f840561c843c993a96e6fb7e61a1992fd8c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html": [
+   "7b9302e4f8944085133018129b5b7de5a04d0544",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html": [
+   "2de8c8cb1df20c10a3e1dc57b1b75ae1f6e3fbcc",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html": [
+   "5ab7aacd9bfea10aeb58c941142bb59064954bc7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html": [
+   "94899b0eef8a795b39729acfe5b3185b573c1589",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html": [
+   "2ca30553142302726aae7c0fd9b3b5f212512063",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html": [
+   "79b0e7039dbc2f6b63b32c81f9b045234a1ca99c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html": [
+   "ad3eb19f8c1abc8e12d2bdc71ac91527872f00f2",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html": [
+   "4e8730f41802f628b578a3494ab4e5b6413d6c04",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html": [
+   "647a7726178ea76f58e51205cf6ae1f070003a90",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html": [
+   "12625ee696fd9b53cace33c09a4646856228791d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html": [
+   "b8c9c4a0683071227d47cc115c05080098934721",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html": [
+   "99e234cb77a883f4f8f08430804236dd1b744ca0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html": [
+   "1de1d44ae49b8f28bfbf68336dbe37486827b1ea",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html": [
+   "19da7b57a4e6abca3c86b23a5c80712100d958e8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html": [
+   "d8ff85a0dc69ced9542287708c3379d9a3e8e9ab",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html": [
+   "1ee7b80a5e604c534137f63f0e4614ae6b59d65d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html": [
+   "3022b6479d19aeaca7601811a5b6ceea738456c5",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html": [
+   "b9cf476c07fbdfe9a142a98c7c4732cb95066e3c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html": [
+   "36c43b36d7ae9b349b4351d52f58277ed4c2979d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html": [
+   "a6bb6f1e47748870add2db1cc9d9fc6f90231115",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html": [
+   "e91453265847bc2cbd1c0a656555cf61a46586bb",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html": [
+   "c51267686eb2f399b1721f6f6e383249cefb4c51",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html": [
+   "793c4a90bcfe4ecac026fe7068912e2c746c3e04",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html": [
+   "5e7abe84be189874f1f80bf4bc5f9b53c7500693",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html": [
+   "5eea8def59332f51ca613c38c56a30622d5c968f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html": [
+   "6bd1a59d7154a0b4b4b9367481d5f4e22e7fb18a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html": [
+   "dee29c95da160621f44df36d8c11cf7e5e41a280",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html": [
+   "b4129f05115ebb977312d239f783d7d70edefa7e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html": [
+   "af904eec692cdd80dd0ed63d6cb582b1c8c79147",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html": [
+   "9d2464d73eaf59c1e0ea80bdb68207dd20faf9c1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html": [
+   "52c65b0df419c27c151506598376f55de68b33f7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html": [
+   "8f326c129774c2e02aa635c51ebd2ec4f8ddf5bd",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html": [
+   "eeacfc724034a5fffaaf56c487976bbd8dad8201",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html": [
+   "629f0b1e4325ee8f62cadc6bf2762ba183be6c44",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html": [
+   "0f195ad8458770ceb0ebc4eba9dfaa5876028f54",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html": [
+   "3aef44d2db0da7c6518c0f6baa2301821fdc3faf",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html": [
+   "02b9018cf8767651054b96f7f9ac8105d93b50d8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html": [
+   "de558ff53a1d4d771792d9b7307fa2551e844c9e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html": [
+   "5b86e03f24ae745530083a31ede4931dfe53822e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+   "a04ef6cafd73c752735f5251ead8461892a57c74",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+   "837cc3dbc06b20872c94057d44a10eb6fe26e5cd",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+   "b39a5057e8096b0420d5add0f51708a86771401c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "ee7241a12c924cd783142b68addf52a057a77fee",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "77028a538b542d0d157f785c625479a350317ea8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+   "8ae44989ba5551afd16f2c7673107d03d54bc5a6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+   "7f2c372b0e1969b99e1edcfb5ff3b68f818357ea",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+   "d430552bc44ca03a8dd64334e1b24f2f33e5ed9f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+   "20b7dd54bff4e75888182e0d6ab3c54a96c2ae67",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "475a0bc5a3486ee749535a577e1a01be062ec4b7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "17ab76a033bdcb86f5ddbada68b3105ae668532b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+   "b8d754a7c522dd1b8c635e2bb50feb831f87e997",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+   "fd82790469e69c441354408cafe0b377d71894a6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+   "f51a49eaea343a4cdf429af6b56bc71a13878fa7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+   "903caf9ab99c4f9d3079d445c65c7e428efe386f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+   "408d57c2050b20688314a4df800ea6e6d9bfc9e0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+   "fcc2d6ae89473723b948fb885346c2b23f262216",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html": [
+   "437779cb3ae14aabf72e691a7ff2a9f33734401f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html": [
+   "08b5b0661eced3ca86cb6f83a6e4261bd7d2100d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html": [
+   "ccf400275a25c71617ed53a83d7d6e427aa57bc7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "c687779eceb18e5dad8ae322e05534c39201de44",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "3bee5c4875f759270d1db1405ed3a527c9a6eaf0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html": [
+   "380a4a716a917e5c607d9304ccdf17ec147f401b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html": [
+   "e0f8eff6a540275f1eb722e0904faddbb8a05e4e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html": [
+   "1b7606dcb224670391a9bfc62af134748e598c47",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html": [
+   "fc229db65259ab6a905e9bc178a0f97a861b7698",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "515f07ea0e97210899c136824a04119e9f2e367e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "efa5245864cb5d6bbfd12e9afa11bbc351f97b9c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html": [
+   "03a0fcb679e2cbfad5d5c4984110de1831b71b0d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html": [
+   "9e19c534df9ff12884383b3f921c8092d7aac41f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html": [
+   "24ce029049ac1e9cc27b5e3aa4f21707d6c553be",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html": [
+   "66ac7130d25884787e3bde75c44aa6e8cfe68d98",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html": [
+   "3f68452cf7375cccf4268f6904070e8a34ec75e6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html": [
+   "1ac53f3c3b906e2d811ff5e52f92f6b2c71cc3dc",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+   "9dfdd01c4f8d2db01f108ec666126ec342b0570f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+   "e86f4558a226a04b57ba63ada68b8af43fa7dbff",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+   "74fe3da8fdcc22b211c27f0731961e162b271596",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "814ee1f816b59e140babb3731eb6a5ef843eeeff",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "86288171f405c499a5f2f9dc59956ddd96745657",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+   "0b3c05150091876d63aac9f8a528fdbab6e0b5e1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+   "060341416a2630762537cd300062e410a82459f0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+   "ff5c12b1d886cf83d01309cd747e6453b2d8dc29",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+   "c3e0c85db0e772ef14261eeaabe50f19e08ff00b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "475118b602c63b836b0b063b5e4b1b2451f653ee",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "8ffdffb5074e159fa008a5de2f14053c2c1158c8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+   "e62460cf05c807f50a4edce0a1ad1c00d14890e7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+   "0f602308263f29b1b25465e46c4103982eea9111",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+   "28d8587959846069a569440e16cafbcf8d6292df",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+   "c865d14f103d250a190bc4b475afad7206ffe177",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+   "3e5a447151958a7acc0cbeb539940b966b2fba95",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+   "cd3fa41ec7cf55aed65cb12ffca6d044b9c4254f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html": [
+   "e5151b0cef169b48b03acb343d05aabde3e143a9",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html": [
+   "26e1ad11e8c543ef7dded57066a51b977bf81e16",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html": [
+   "3beb9397b53fc54b7c8c9f2efc20104901830eda",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html": [
+   "704a84ccae29686a6e90c7b658b4cd4b7d968d41",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html": [
+   "5ed3aee5ecc41b39e8ec292af956eeb5f4ad8ac1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html": [
+   "1101eb09b351632217b79946e11e722e4e36885e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html": [
+   "6a5fb25d4276e3c544ede7e490ca999cead1de3e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html": [
+   "e7c2e37a22ca7779b9339c3d768df7461d56d510",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html": [
+   "09f961930aa404e286112e276f2fd839c1fe9039",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html": [
+   "57b2a1b801a38873d3c5ad949ea7c00544518905",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html": [
+   "620a3ee07afe496b67b58f31c2bd17848fb031a7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html": [
+   "ef8f517d3f7e1d4cb42d966418fb396753de2852",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html": [
+   "b56e6763a9e978b7798743a85276992a75c74e49",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html": [
+   "112dc5a5c8f0778fbf811bf25a8f9f808e6f5561",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html": [
+   "1ec5d4200f015abc274b035efcdd2053b48fc30f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html": [
+   "57fa649afa344dc9acec5aa4085857154abe0218",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html": [
+   "734d2254f88dcb20675145ec2b6c51550093502d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html": [
+   "9082bf4ccf4ffbc1ffe22f86fbd82e74e743ab8a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html": [
+   "9b76a680e899ba03722855e8f913a359076e910f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html": [
+   "75a991a04fa5a6e1453fdec10da03a7455346b20",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html": [
+   "c25c3defc4335714e6b857f871bea01a01f37d2f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html": [
+   "701f2d73bcdc6da179c6d7950bf0a2b96cde3d1d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html": [
+   "d290db53f7965b8b6d425fe3bdcb5878ce49bb51",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html": [
+   "3a7120351b6f18da66a26723650cb0f631b6c709",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html": [
+   "3e85f68d7135e73197c57f63cb3236b21f5a36cf",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html": [
+   "34484fdf417ccd65e420a95d568e64eac7ce0cdb",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html": [
+   "f59b0b40090b03a2e0c6a3be5eb387e9bddafcde",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html": [
+   "01eec1bee2ae95ce5d2c47662f72762e5f2e7a55",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html": [
+   "c221f6f7ac4b0fefb42d250b219d66de3730310c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html": [
+   "a9aa1d823999d2000b3c55ccf70858e491ed112e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html": [
+   "581e7ce0b9c4c9254c2bb870f97ccf080d428405",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html": [
+   "4d5613013c0e42c69f0d9c57a683e33161d504a4",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html": [
+   "b45eb6e9cee14dbb831f3b1b5dc907b8193a2a5a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html": [
+   "eee2437ca18797fd65326a2d4e832b9268da7b03",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html": [
+   "f29bb36f18e4fe0e318a130aff67f32e6ce079fb",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html": [
+   "c8969f1d778ce917341babfd09786096633ce8b7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html": [
+   "5d9bc6944d9ec62b86f122b7758c7bdb2dfe847c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html": [
+   "dc3a34ce57c3445f35ca96afeca3256104c0c32b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html": [
+   "7406e3f96c17c60e3aea1e3bd25a83d910fe7690",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html": [
+   "d8256f74b3e747272ae16b0dd2cadc851d98f293",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html": [
+   "be2c3ca9b289dbb2aad547d71914d684b3bc3093",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html": [
+   "0bc9282b76a8aa8a2b1e45133d951de46ee4ae70",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html": [
+   "490821d67af275ab8a25e9e359757af1850d2ed1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html": [
+   "bddaefc4a98294fd75fa1368defba956d4b8aa85",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html": [
+   "b4d36fa58741924b3cd67477b204860237162570",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html": [
+   "b4f501fbbebba7eb0e235d36b810f6fa9447f09d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html": [
+   "cb62336353768983da2544bc697d1b2ac938f3c6",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html": [
+   "c382dadaa45a706339b885c66b9785a8c112fa24",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html": [
+   "597dd7ef2e17f4c60b8f842a91c9da03deacc2a7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html": [
+   "c879e8229928a36421b9719f33f6c9228ef78ab0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html": [
+   "56225dbc3af0931876b9e7b927ff125b1d8f2ff5",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html": [
+   "c1fb0addb6e9ceeb949c55c015b99ab5fd57ee79",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html": [
+   "a18c4e6371e159a42486a119b114838d0249ff37",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html": [
+   "207b7fd9638c7cce759db5eb86d8cab4658e733c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html": [
+   "d3e4aeeaad2f8c9962d045f5e87c280aadeeb846",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html": [
+   "b018ba12e8f1a2ee1709db7ed404e9f1dec6e797",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html": [
+   "1b8bd3581ad4f3ca6c0cb9d1cdf151aaf1b3248b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html": [
+   "8d6a0159bfee773c443a96e637cb554f8b0b9d2f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html": [
+   "93799cad263637f55d8e2dda6bd0969365d6d33e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html": [
+   "4eeff108866e92674b87037a2e05c53ccef39b26",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html": [
+   "833ccfeda0458acdcc958445919cf8ed84341943",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html": [
+   "85d74f6f12a6df793a9482d06b0003b5c0f48cc9",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html": [
+   "84662c7139e86910c58034cc6b07015df10576f9",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html": [
+   "783a4281312483753dc9636c2999c520bd1157d5",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html": [
+   "bcb3912c4eeca0e9a46cf30dd61ff9e7736d88f3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html": [
+   "915430e2bf01b65e947589c84de7b348acfabd3a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html": [
+   "06e2040989fdb40086b49db4585a61aa1f462e85",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html": [
+   "4c448982ae0702e42863b107121ec9f56ec1f162",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html": [
+   "470a1fed5dd769946eebe7f5e9c9a67c2a3761a3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html": [
+   "c69cc65b24fc9717a8a4c5413bc76020268a3fbf",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html": [
+   "f88769fd9c0f6978e0444dd35d84280d501843a4",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html": [
+   "a747db8bf19b2f6a74df320479f008d8a862e832",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html": [
+   "6fbdb686a1a4cba4fa0e1d8f42627bae94c00c87",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html": [
+   "a7e3dc518551444aa406bd508c0214974e395aa3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html": [
+   "2a50287c1bb32ff9591aa31ca06976b48d088e8b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html": [
+   "acb2d52a9e09ad3b1c8d71aadb9742c387bbd110",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html": [
+   "8c16c05f1a0af2e03ec60bd06cc464984e3c9cca",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html": [
+   "496d12d647ba6f548f612320180a58582c233089",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html": [
+   "1b0378a367943e73d77d26f92265f585ba300fd3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html": [
+   "00bea0d3a51480a94825505e175dc9cffd35a690",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.keep-origin.http.html": [
+   "ac2686bf311a0554302b904df99fbb0889092bbd",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.no-redirect.http.html": [
+   "0c72b8e9d36a0923f45c9fd582588cae5cad243d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-http.swap-origin.http.html": [
+   "d6c068b61b8d168a7353f08993e75b8dafd0a707",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.keep-origin.http.html": [
+   "444b3ef22f93b24e2cc1a113b79b3f4f1ff8584e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.no-redirect.http.html": [
+   "4e33ed9551bf6bf312854b8945a8c2fc15adda3a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/fetch/same-https.swap-origin.http.html": [
+   "d458756330b1e31466742ce816662252c9960392",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html": [
+   "26b3bfd4d0c38b996211dedf4ca724e3cbe388b7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html": [
+   "a0ccb1b05a4b90b741aa8a42bbb5e93182e207c8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html": [
+   "c6445444c0dc1f5113429237098ef3c2bca14849",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html": [
+   "d1f5a4d16aea2dd9406fd1fc63ca6b22a4720a8f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html": [
+   "631165464cda870cb5561c893c51afd214094c47",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html": [
+   "c38aec92be25efb95ae83acdf6e5fdf8f8161f2d",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html": [
+   "8dbe6086637901a88591a6691aefcfe9bf8ec275",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html": [
+   "793297d1697d0650734800821c959dec680a4cd9",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html": [
+   "e46888e7dd1ae3d03bb262df6cee378b2c56da67",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html": [
+   "62ce6a414807744e4c20f0f2d3f3350b7cbcdb65",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html": [
+   "6afa660bf9da441fe5a75970abcbb37e77a1a322",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html": [
+   "c32fe9b95d5ade86f1e2a78b71ae353b36af0123",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html": [
+   "e7cbc17b7c169e4ab2ea7143680d4e4c864f9ec0",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html": [
+   "7446d6cb7f18d4f587b8d17faa27981ea5383dd7",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html": [
+   "1f14c13bc58abd99be093a857e303bef259d304b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html": [
+   "f27f5a9ea8cb556136719475f6034e03088b51eb",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html": [
+   "3fc281e8deb3412f0bf566e67cb1042da83cb605",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html": [
+   "1343e9370ecb4e45795395127e38d5d2a7d77b9b",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html": [
+   "aa5a4dda5b0de8bb3db1b424a57060539a4862ae",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html": [
+   "16d6b375c4f3744195181f5b6502e75be9069011",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html": [
+   "d9c21291c9e930663e0790f7d0ef286ed6d61f46",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html": [
+   "f383932ad528165289c0a80c24900e61375ebf56",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html": [
+   "7f0a7900e03b348626c71a5757d8b296eecc6321",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html": [
+   "afef1ce00fbde5556623c788b36435656cb3bc79",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html": [
+   "e0fbedab98315db00c5fac82d9ea545c6fe4043f",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html": [
+   "f737d136298086a08d0c152d378270f440f244ed",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html": [
+   "9d94546fe02d7a0bb9c827e88fe8a471234d8960",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html": [
+   "f73a67d4030a7f2f9ffa037a4cbd4fb7527f3911",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html": [
+   "e5329556d40555efff9c6bc1fbd36e3f1caea5cc",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html": [
+   "424154f44e60f8b8b38eec377e01307de0083a99",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html": [
+   "1e0fe60c46c900db52df08b0bd39928fcfc242fc",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html": [
+   "b1c1b2c78921dbeafcb368deeb1ba0e57f8c0a67",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html": [
+   "c6d6679ef334fe5834d6a0944077ccaa6f500559",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html": [
+   "0ec1d0588595d0878bd6f12f66c9f6a63e8e1d27",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html": [
+   "1b5110c28cff65a751da9819b5c51ac84d1d245c",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html": [
+   "43e2070ea66e17fee67d781b374bbe8183fc4d52",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html": [
+   "c82ebd1769bbdefdc8b1ffb1da8d319b0c557983",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html": [
+   "79c204fee0a06af19c1ceb046807e6c9f4050704",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html": [
+   "d7f31ea497a922c6bcef93194f4b46a86a7cec97",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html": [
+   "522877903c5f15c29e859c0eeb4ecc71a97d7ea3",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html": [
+   "5dc0587fc0a379f1e1c4e0b663883c81267c79d2",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html": [
+   "34fa9f77036447725377d78af862089d540eb377",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html": [
+   "0de1d990786b64403bd7d79f6d7d3699f1811f16",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html": [
+   "ed256fe53d2fbbe0d2d567c70d33fb0c0a2bf2c1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html": [
+   "1a93d1fce387b5d2e6cf6c0b23556b86b2249cf8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html": [
+   "25f197009e65363588c9d8fa9c1aaca79f380adc",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html": [
+   "54c3a070d6180028dfc6731de40f8a7c35fe48b1",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html": [
+   "346d4c1ea2aea8054dfc4d55f3ff696dfb39204a",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.keep-origin.http.html": [
+   "15e1b94c00d6c9c87d24c055711bbba97a963a36",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.no-redirect.http.html": [
+   "4f7ed37e7b293158e318520ec954b7c14bbb981e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-http.swap-origin.http.html": [
+   "7fa22ec13e428f8980eb3862ad7a551634d49d06",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.keep-origin.http.html": [
+   "c16b91a511ae074324dde71eed029f4dc56fb31e",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.no-redirect.http.html": [
+   "66b00c803854acd9993b0516d57284dee3b41bb8",
+   "testharness"
+  ],
+  "referrer-policy/4K+1/gen/top.meta/unset/xhr/same-https.swap-origin.http.html": [
+   "536a94590b32476becc9b56d42c397d41e770815",
+   "testharness"
+  ],
   "referrer-policy/4K+1/generic/spec_json.js": [
    "39cd997338e4c9e235d30097d970daeff5f1f19b",
    "support"
@@ -496428,6 +510479,2858 @@
    "5dc2085c62fa48787d4c16da422e3551eb844630",
    "support"
   ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html": [
+   "54160250a641f6e480ea3adfc9b795ec2f59afad",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html": [
+   "a14fab1396f2807021f03bbc8ca723a852d82876",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html": [
+   "853e3ecd98f57a09a6eda2e11c228ee6ced43a6f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html": [
+   "f296d012d82e04f1d9fcff443aa0ff385f590b1e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html": [
+   "2d3b451e43eb62a8359ba79a8bac0b7fa31131bf",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html": [
+   "30a0ee652cdceec890fe076299551c3e3e997dcb",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html": [
+   "8576b77ec6b4a62c0cc21e8ab9fcf82274b8f040",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html": [
+   "7e4f30fc2e8c64a7f0b6b0a038d06981f1a3ea2f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html": [
+   "dcce9ea64ad4912cda10be218d62b5aa407d9994",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html": [
+   "a2b413197ba3495d4d624affebafdf2d4809011e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html": [
+   "74ed4c622f3a239ce4612f9888475cfbcdb759c7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html": [
+   "8f19bf48229bd82275ead64e49e5577abb79463d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html": [
+   "c6591c90407778607bbf70369a5b1ec57bcb24c8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html": [
+   "b3ae03548439d3679daf73fe1863858fb2c75a40",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html": [
+   "ca967c585c9aeafe43d8fe5f824a7e7bd81dcd2c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html": [
+   "7a620541464370f8f96be939bee2046a26d0172a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html": [
+   "806fab6c61dcd091d6c0818f92c49718ec0cf3ec",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html": [
+   "f71d39ca0698b7c94c13b0972ca59e924b177895",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html": [
+   "978ac1d7fac40ee35f43ae80ad4fa739093f3dd5",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html": [
+   "c9db3acde9c7fe0c0e93d558cfed49c605d85b58",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html": [
+   "3decd3a67f4e1735e8a7bcd7c710b686b3c53922",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html": [
+   "9277073bbab5614fa9a982d8c6618b8b1282231e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html": [
+   "912e6135da6cf662229f156cbf32b7d7e9c57e3c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html": [
+   "9e09c25bde8ac891d618d89f40514a333f7434ab",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html": [
+   "b2c36993e9f012d93389283932d5ff7b06debad8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html": [
+   "36c37a40fea798d655d18c438de89f623749fdc9",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html": [
+   "b994dde1720a9734bc51bd898bf64150bf53f083",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html": [
+   "5da33c6f1f3a52ae54325a75a682d7d4b6193290",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html": [
+   "efa5d3118f109147e560763729c45fb6c4d83533",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html": [
+   "3787093e5bd8505b1cef6890c71ce8a7000c4c15",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html": [
+   "d6c6c6b6d5457fe08e413c494657dd86d392a8d1",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html": [
+   "5226e583a55e550b40ee4ff9d6f04df7a66ae88d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html": [
+   "e7420da5a18fcb69392aa7d7548965835ba29628",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html": [
+   "95816eb2034cc0c033f37a7828ef2c88e677cabe",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html": [
+   "8fa1801dbc154e998170c148584a087fd4554667",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html": [
+   "f268a6ed6ebee3bb42b2b2347b19216aa968100b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html": [
+   "f5d1eed210657c6fed5c0e053040ee7aa9dacfc0",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html": [
+   "a9df49d87564de6cf23fea86ae4ed5fbfc4d246b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html": [
+   "87c7b14bad34da3ad61d455a96a891267f6ea8bd",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html": [
+   "21c9f250b51618041f564babe930df07304b1712",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html": [
+   "1009f359e873fb521df4b7c79b008857355c0fd1",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html": [
+   "bdebaeee48f3e65ec11c7d29249c6d0b18712bf0",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html": [
+   "598bf0aaf23295cbcb7389fe530ef71c292cf543",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html": [
+   "f2e819ce3688d483f5c2a0cf72e5a24541b68728",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html": [
+   "b8ddb48fd2150ff3ea80dc80862444969fc679b7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html": [
+   "4c6aa0e5cab252b490e66a8c9ea7b36aa2efca98",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html": [
+   "8c499d35c7b8b075e9b779b6e098b342ea312690",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html": [
+   "36692fccdb84d7a711da31f469755f8864b8ed38",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html": [
+   "e8578c365caf6c71c04f6b0aea49d4d7a0fe8310",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html": [
+   "5d489db7aa640b8b6384250e01cd42e0110d82aa",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html": [
+   "9ede931dae56cf6e93cf2094462374a35b57b80e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html": [
+   "9ca994d57eabf52dca139554df5ea2975e12c55e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html": [
+   "37d2238c09d2c65ce118b3f6a5578b0941e38cfa",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html": [
+   "3f69bbd21915c59d7f802c707a28ebcdcf9e2c4a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html": [
+   "43bfecf19dba54a86657b0de749d773a9619ad42",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html": [
+   "67900f9062e9f7da29fcd3364ddc6c512080ea9d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html": [
+   "dc43bf414611b8bf2923b7257b6e33c34c284206",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html": [
+   "32bedff1177a0fceeacf61dc1cdcbd712b35fcac",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html": [
+   "1fe69c1af2434b4a72a42a589c37987032c333d6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html": [
+   "90503c86c9abb6e6844398f826d8ce58984415a3",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html": [
+   "dd9e20f0953494656d432d74a7fee458ae435d37",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html": [
+   "92fd41603e1e57108739a450ca4f17f3f0b62b37",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html": [
+   "f5d55ebf08c0c628e7b6f8ce99a7ed9389c7bc49",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html": [
+   "9ca3d898262cc48d98d88c6cf527010c657e8d82",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html": [
+   "8797d24f9125fbc6dbc493c3c84f4c58ce54a18b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html": [
+   "a21632865ce85643e1766574769254c20a45c790",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html": [
+   "f47d931ac09e32f9d1f4bdf415e5ee54edc21946",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html": [
+   "1cc027e3fcb7310f8523aac51ed464b3d0027418",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html": [
+   "9577dddc93b9c40b4f9a313055bfb855a462eb1b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html": [
+   "fc5b92fce9dda98db743bcd64db78f393b4ff5d0",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+   "9a2b056c8c6a91ca63119454f403acd588675a4d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+   "6f3bb72674a80a1a15e39e810fbf21e7343e1004",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+   "731c6fce57221fa0995140b1f410fe05f1e77d3b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "1b17f0f9271b5370880529c7502884a8225e7fa2",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "f3d121e857ba4d390e03bc4ade1ea010c9c28182",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+   "5971b59fad22167b8c66b46ab1647982849e7cd6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+   "055ec8c21222c3be9d09b2453deb9a32f1e4bb03",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+   "aad5ff4708f162ada70d7d9c97dca1ed136b3c6d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+   "ce0835daf591a9bc748ed8ea83c0555d614efdc7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "63606746657435754813b8b6282262821238e0ba",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "9c3604a6b96359658cca5ee212f64f8228dd0fee",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+   "b8933df29fb63f00fa884987a7135efa6773b0c3",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+   "b341ff28b99d8ba056ced5417fc5240c76a1d20e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+   "d0172cec6bbfbed75995926b6add9a4c3608e50c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+   "2dfd23da4801f147b9ee8b34f3340e69c9004aca",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+   "5f01dd0a522c8721449a1a0de69ff291ed1377ba",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+   "a20fbdef3e1d40bb2cf7f9e23f0d617bc7833b35",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html": [
+   "19f762834d423951ab566e0c936120c2bd9e8f5d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html": [
+   "45b3f76674cf768eb34a3377cbaaf2cf34270e21",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html": [
+   "25794b0bdac85d0ef35772cb49991f0391a70d39",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "4808c92b9a6a4679ae5a501994f81d4961b45dc1",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "0fccf00caad96a6f78839bb6d81da9bcd13ef721",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html": [
+   "122f0971a36ba03acd82585e0cb4dc0f6cdef254",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html": [
+   "ce7aa5044861437338ecdebf1df6bc77683e0477",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html": [
+   "4ffafe2c0543e1595dd5247165cb6ad8db742622",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html": [
+   "decf2c40322d933446695c980e91258c68521df3",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "2b17369776ba11b8686c97093884099a18632ec0",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "c4d44c7d17428fdc99cd9e82c8679584a8a51636",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html": [
+   "110edf5f8a79a93b325e8800f55e895707572162",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html": [
+   "39adae23ee21429b2cc049e7dda371d88fb65c02",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html": [
+   "ba6dbd59d6d4987a53f9b1713ebaff40ff491973",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html": [
+   "c3680a1f71c832594374b5918d30a65bee9a08b1",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html": [
+   "4073a9177e26fc955e7b40ea2ff8d87a7ab708e0",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html": [
+   "963e613a8e58f7dd2ed1e3c10e35d78b067762d8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+   "c4bcd4811fe76c379aa379886a5f05126c25646a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+   "202fa0c9a7e4ecba57aaeca8083afecfe92fcd17",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+   "520f0941e16375e525c92a0565f8659ee9fe0bee",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "00a20bd1fb4198677e88a8bdb3dc6b8792ed7f71",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "ca4dcf7381a0b833f4ee54a9fc63f61aa8c55d7b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+   "b189fa6326c7af3956edaf4977a8c9df0090a7ed",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+   "2a8bb2302394bc496d3ce95d6c8fafb575b55c4d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+   "600ce02bc22333cdf693ab5162ae9ae0fa60e5cf",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+   "824fb33302f45d3ed090a86e0c18648bb3f5ffb5",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "4c83fde2e4d336bc114b0f69191ff819443e39b6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "0f3d7878a5dd50d64cce76f8c28c7e42a6da60fa",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+   "c33c745d3881bbc02f77cd9c8da0cbd42dc5d7d3",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+   "76eb7bd934a89542266ffb380b9cf57731ea222e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+   "36088e087acf642c6b4d6269c31aeb01146b1482",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+   "117a77b8e5a0aa89d2ae5181bb85abfdd2735f6b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+   "0cdb3f1cff7e2cf5123e0549c9ecc83b8ccd0e62",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+   "ef2c352ca53616a2a8d2e6ccb0187d91fa338dcf",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html": [
+   "fef103ab36f9a388c6ebc29596bce7379f301532",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html": [
+   "b30e65cef88f2288a90e57076d00638bf544637d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html": [
+   "c85a4b5a464710626f6a1137754fd6322419624c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html": [
+   "99db3864a6472cd3dbb7fa8b1532cb69d4fa1fff",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html": [
+   "4211b11a519771a03133c0acc099e3ead6f3b56c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html": [
+   "15a90bd77c7f76f46e16165c095b687292d93c79",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html": [
+   "5dc1482ec09aaafd815fb6bf7b7367b535f985bf",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html": [
+   "f209625f1856bf24ecb5186b40e73728a3e5fc5f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html": [
+   "0ba5f0d4391e248b87aaf5716f5266257818668a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html": [
+   "603523ab4669970fc551e81e0b1697948bd9d507",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html": [
+   "aa2f229a061def3f369efa8a9af66a967b7b4b76",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html": [
+   "8456a5f131bf3071da9474d3624f5bea06e971bb",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html": [
+   "5c598da13acbd47b45499fecaf74301cb08b801d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html": [
+   "2027d54604011619f5c3d96beda2c9fa48e95921",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html": [
+   "764fbf15ecbac5f433c0bd48843b2c0569c43af1",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html": [
+   "410ae2bcd289b6e82b3f0a6d681431057d04f407",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html": [
+   "0efdd54a34f7d936299a2728b5c11c0ee3007b69",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html": [
+   "cfb09c1ec0363f2c4cee735f34af2f9ec896654a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html": [
+   "3b182ea59858e57f58fa4eb9983080f6f1ff9c8b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html": [
+   "ebe29f74bf0acb1a5d16073f059d4e9478d3c4ca",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html": [
+   "2659b7b9664bf7527b2e915f4327e48463bd74a5",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html": [
+   "5093dfcb745883bef132eda01c00f595766640b7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html": [
+   "9d220aecdcf88d6aea7f92aa7800edc28da20633",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html": [
+   "c80120da25ee214c635483a6ce7670d947ef59e0",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html": [
+   "949beb9f2e573a1c4d9aec2b7cb12bf1f3707344",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html": [
+   "1562269434fc16c3f5dbe16612a48d91166104fc",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html": [
+   "9a841555d95d16b78467702b76497fade3030e46",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html": [
+   "7d4eba4c0cfc6a8850f1f3e9ff82ce78c0d43e4e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html": [
+   "e822bc38e9b831a6543b1603d4991b5cc66ac26c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html": [
+   "89a356978977198d24c0cf8dd28715acb041258e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html": [
+   "09043d6bde786fa40c31afa62df564342905da26",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html": [
+   "4771692b7568d9e67a4526d7d25f2dadd74ede73",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html": [
+   "f0334b267bc9d7265ee5cee306e7229efdd17e0b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html": [
+   "5312351dc239cc111ebb4b2263668fa52e175c99",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html": [
+   "c3c6b2446319d51c36144a41cc92e8acd3a02612",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html": [
+   "a0d4eadc671ca7eff275ff1dc2f017f095cb9ee7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html": [
+   "587548d0b69e7d96701ffc528b0efde1ee15198f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html": [
+   "38d7bf856bcfd06e89fe161bf2bce95599fcb7ab",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html": [
+   "62b6e24a057dea75d7d427b579440784dd5d3e1c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html": [
+   "47834e9d522f58fc39d8de921b83327b51ed0513",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html": [
+   "2afe993bbea0cd8331f5b445f8a47e4998bdd728",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html": [
+   "11040bba5427417baf97aaf9aee4734e80019dbf",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html": [
+   "c33eb02091aacc5a197349db5445133f5a3da205",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html": [
+   "9bb1e5bfbdd52118639039393c323f5bf1465de2",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html": [
+   "eae638c67468e6c295397ea7ad2f0fad529fc9d5",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html": [
+   "527328fc980c46debe0527aeed20e58c86ce2dd5",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html": [
+   "6b706c4de123653c3965ee0844a9cfea415d73cb",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html": [
+   "c96c701e38a6a2101997360beb62a34a422a6d50",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html": [
+   "eb57c2c11cfc2f251eb3f51cdbbbb255e50e5aac",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html": [
+   "d5aefdb2ad19721955ff7ccbbb3f876d65c05c2f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html": [
+   "47775c11d5d7211c568f305960ac92c9a1388784",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html": [
+   "39ae72fa535032985c0e87a71365ed1f841c9671",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html": [
+   "d2f928e3b9fe86de89f91336b47531e02f5172a2",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html": [
+   "2dfdeb45d836d87b4c6f1d6b709f7eb4875c7885",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html": [
+   "efa5185ed5f2e67bfd6376a44c245cd482104ffc",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html": [
+   "7bbea8116b604ccd28c9a23f1386b4e78ec10ebf",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html": [
+   "ed68f19bf05e2a2b9a7592739d4bc77938087002",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html": [
+   "ab6d388f2247a5bcb97aa22f3c0d29662cebee72",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html": [
+   "40bc6f19d1eac6ffcdf7cbd87bca1a58898e408b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html": [
+   "75ea4bb8202e976b893750a9335c1275577cbefe",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html": [
+   "ddc655cd69fdd30872f28bcf87fe0f656211c7dc",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html": [
+   "d140b8bf144e868939549693bd7dbda18c173145",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html": [
+   "5f9dafe9f7befa4e18261753e08bdb9989c983a1",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html": [
+   "a2be99f9fedb23b14ce4f37d7e964c567dcc273d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html": [
+   "030d5f10d329e88e8dde99f699609f15f39fb5ff",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html": [
+   "18500c2f2fa829c653da435bbc88f6f73d4db03b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html": [
+   "bdbad5ca2b7cd2ecdcd7828dbd8f3386c3fd4d19",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html": [
+   "b079438febf6ef8bb231aabb03dc46e747c0eaf4",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html": [
+   "b21409a073a57482f81bbc906e7ffac2f645a84b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html": [
+   "f52736ec73bcf8cca2761159f7fcd15e010593a8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html": [
+   "5643bee8c84dcacbfec590db270fa8974f2f50a8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html": [
+   "929f9a937ae371b7bfcf2b95031e043a165aba9b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html": [
+   "221ad2be6e537956e528c67b49f361fb2fd3c520",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html": [
+   "db0b3e6b74e6b7321a7f0d567a4e9730ad01426b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html": [
+   "44639bdd28af90075d0d984862db2610fb0346c2",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html": [
+   "fd93d32cf35cf6a5211e515a1c10fa3bbd1961d0",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html": [
+   "89bc43cc723a12c5b1818668a496c52623d9291d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html": [
+   "4ec3d90cda93bcc6ecd5a269f0238034e51cc1df",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html": [
+   "420d76e655403cc127a1481412117bd0e6d3b82e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html": [
+   "8d243e77f6d1183f8c1ea6cc99c18da4ff87a4c8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html": [
+   "1dc719efe5593da47e7dbe49603ece6c6a038871",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html": [
+   "2136d9fcabbbc11ccead669b65fa34ee05c5081d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html": [
+   "0689e03855087f069817f21f84609834cc50ce62",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html": [
+   "4aeaf47723430bad32cc0453c2c613e782d6444a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html": [
+   "5ee203b76fae6769bade02c2ff7191372a3c0a0a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html": [
+   "8c1c8e6b2b4d12b69fca2e982149df7f3800080e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html": [
+   "0feeb305f722d93ae7e4fbfe9d04bc610dbed5ce",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html": [
+   "51fb18edfe72121230949ff3f358a024cee061af",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html": [
+   "364a03ae5529bb784a8714871ebcb227f4757876",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html": [
+   "dcf6bfbf1c0da5d444e90d03c975fa9492de090f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html": [
+   "61fe4deebf76e6e222328ce1a6c436cdc65f6894",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html": [
+   "6c70039b1f466182a17b595c7408e289888a88a7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html": [
+   "a54f711b8f5f1c448b3bd4d1752267d2efe80346",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html": [
+   "25e9320df5c402deba57e43f36eea0a3077f7b2a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html": [
+   "198552217460a79b1604407ee96873896eacdc0f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html": [
+   "c01c5e96eebe7a27057bd8d70f2c67baed213908",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html": [
+   "e8839b93a3123c7c6f72ba8070269eaecc67f4f5",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html": [
+   "c3e3a5209dc01b42025fedd22e716e9f679497ea",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html": [
+   "b8c03e924e19c702f4175e548db9702f13acae7b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html": [
+   "7cffff93b689794e0f493401150dc29c73d22199",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html": [
+   "581789cd22ebe312a4ded5a0094f4949017da0ea",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html": [
+   "a7fa4e3d2a0b8e8184936b66b16f6fb6214721d7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html": [
+   "9822fe843426655fd245555e3b035f277d4a29e8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html": [
+   "6b465939df7400c940dad441571981b03ca28383",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html": [
+   "46e82825fb336b8cafae0e45f71b091a72e71b79",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html": [
+   "0756276d9e0a8fcc300a2569952251d23eefee59",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html": [
+   "9f814fa852bb431663ded0df930be9586d8f8cdc",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html": [
+   "129e3c560a4d0a7ac2c5fde2261161d4d76ba91a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html": [
+   "af8a97d1184f1cd61a26be60875211d50de1b2e6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html": [
+   "40fa08862803b41955d5355b58f17eb88fef47ca",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html": [
+   "9dfd8683770a17fa70b4d4c7938e751bdd5f520b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html": [
+   "64df30a885892f3adca158dd9fa665c9db66b9f6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html": [
+   "34be694e3faaecd6442f7bf0e7fce32fa07195c9",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html": [
+   "a08f1b2191cab619add9a575a3343ba8f39b081a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html": [
+   "6b57a550032cc399c1418ab446f00a99f7508d43",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html": [
+   "f900690ec7f7a77551aed8303632b4edfd046d57",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html": [
+   "7fa850eea50f55cdc5d894e8523b305956bc8a08",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html": [
+   "68f01c719ae05df163455717cfa264d5f039f51c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html": [
+   "dc95dc909b7eb480737b6c38b7a766ffe80fad5b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html": [
+   "1cc91cb6ead2aeaa3e59445bb5e2901f8a0eb256",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html": [
+   "d6809deb530f094afd665e8b6135b2f78ec56f58",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html": [
+   "b78fc7135e4873bd284d610bdaa9f7f8961b4361",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html": [
+   "c8a46e5d191ba9d332292d02d762c21c050977f2",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html": [
+   "82789e2cde2ded1f459a17ec952802d996cf9095",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html": [
+   "8c84a954c66ccd71ba9859924ad4c9e5bcc7d8e3",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html": [
+   "97545736fd9ac7d3cff7028eae72a7c999870c7f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html": [
+   "a6865e346d079fe0dd05a53512cf97b768b88375",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html": [
+   "7ff5670a5c266ef63fa9b6a9b62751e753ecadae",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html": [
+   "2eb093834d68d9592c9f1a352a7aa4e40d073cb4",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html": [
+   "3462597c2f1355742879b6650f8a5fc1e5800f8c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html": [
+   "92503762400a3dc776e8aadac650844c62b9f1dd",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html": [
+   "1ae3ec326cf0b67abd23dc9fea52bc8e00fff6b9",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html": [
+   "d763c5f63007b53134786a5c777c76c541aa3756",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html": [
+   "3e4776ae7ffa6eb39e7b70b2d203723b58f00cb7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html": [
+   "984888d1dcdbc9f9eaa22483475caea825e1505d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html": [
+   "1012f88acc17ede9aab6e0a0600578a2b55a68bb",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html": [
+   "293f3b81485adcaa5a67d0f10b23cbfea0db0aa4",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html": [
+   "564e62a6e5d626179cd596788a254b7dc59f4e27",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html": [
+   "7a83e94487d88989925eb7dba6519219ed543a26",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html": [
+   "446cf9824f16f96757272bd1709b4ee217362bb8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html": [
+   "6635dfc50312156f85fe63759a058b7c2f620c38",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html": [
+   "e83ae4c76934085dc7af62b14e3c7e031788a97e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html": [
+   "15d4e795dd77c00f939b42c0512682a44a2ce926",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html": [
+   "7658b82ec1a193ab7edf4a7b3d70299fe71fdb77",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html": [
+   "6248d0555e517b47413b2cc3609b9dc95882361f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html": [
+   "48d5d351b695794a400f2dfdfba7916ecb32c6f4",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html": [
+   "b46c6e3be6724ca80bf88815ff92b60f52ce57ab",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html": [
+   "12cae73fbac9bb0565e0796322b6c6e29988d2a3",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html": [
+   "ded040b8f10622d21299318c9d07f811d3a794f6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html": [
+   "587d33bba90e7b4707ad5960a155837f66b85045",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html": [
+   "d9f2b31903a2c82c6bf82572853fb6e42b6c6498",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html": [
+   "6deeb1030a2b2f3619745dbadcebe948a9658286",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html": [
+   "d398f8f0a49c1fe73d85806ae2041901180bc4a8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html": [
+   "ea6088e2334597bf9afc48dee779ff218ffaf669",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html": [
+   "dfcf3cf24f13d4e2feb5e1510776e1cc2e940a86",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html": [
+   "ab490575d22c4ebb49d0943c6988724ee5cedd17",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html": [
+   "364b47cd599788275135fbb1da0ba2dc4dd7f21a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html": [
+   "abeafee9eeac4a9b96309b3c572cc9ad24647b6b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html": [
+   "06cd341aa20f684e9a4721eb447b38e87e640f5a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html": [
+   "b65273930ff5d61a0d93d177a0660cce396749b7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html": [
+   "29da61ad2cdb76a11c6ae2597b4220e45484bfbf",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html": [
+   "b5883fc31dd6bc183ce3cace27e8156a1b7970da",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html": [
+   "8bf24a8b543dde60ea18c97d49486693c84af7ca",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html": [
+   "5bfca7b23cf05f70b7980270fe5a215328ea114b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html": [
+   "5e976f19844897fcf1867a9a82c01fb10c789884",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html": [
+   "238d6a7a703c724492141c0f154f11c3f6bd2e85",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html": [
+   "42ec3e3321b5e2316be1f65bd8312e9e1cd66cfa",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html": [
+   "d5ad6f60819ecc4586da5a5aff08a885c51dd684",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html": [
+   "a8cb418ff69dfb9f758dd99f0fa9d343a7899f8f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html": [
+   "edc3c13d38b0456188c47b7e5cf65b4fd18117e2",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html": [
+   "2f7f2e4a45af587a89bc3d9ecf2cc88253e2e1b9",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html": [
+   "d5382241de77a065146cc22d9a671ca4ac6b4647",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html": [
+   "462853088ede9f96adf608022e2186e3c64b404f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html": [
+   "10ce4ce09d2513254bec9197efcfff3685695ba1",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html": [
+   "eda423471fa4eb2c6bef87ee0423685708e8f9b9",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html": [
+   "a96037073193a5441f72ddadaa362e44ba79e128",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html": [
+   "07795d238fb3887eb69473696e893b95f61ce8a8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html": [
+   "85e10c6d5d4d4c8f4ccab1b0dad9d28c9a3ad2a1",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html": [
+   "b212c97aedfe0cd014c93fc4b8d10a12d1826c24",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html": [
+   "ed9b01814dc2e1728cf30f65d9f76da4c0708829",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html": [
+   "0fca364bf458606140e0bb2555f50a67293067eb",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html": [
+   "dcde268232674e0f2db09bd26757b90b1a016413",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html": [
+   "65e4b5309887d33916ff6f291668bdffc8da535f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html": [
+   "4ccd1f8719b8b30c719b80e098b9b147c832cea8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html": [
+   "5ea416427ae79e085edc539a1524573ff4518a8f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html": [
+   "2d750ef7f1f0bcdf074dd6a4a9c6ae947fc00be5",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html": [
+   "f32e1403c92176353ecb47e71c7fa38b087a59a1",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html": [
+   "4245f1c5fbb009b9b92e23afec0cbb66f7367f63",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html": [
+   "a8b1d9102d52274d95ee9f6227cda7bf258cc1ce",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html": [
+   "6802465799d8eba057aa2a8a6be892523a17ece3",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html": [
+   "b91241e3350875c813092914ed28f8998df17cee",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html": [
+   "b3b48ac716734f32227ed1d9c471c3a2825fb487",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html": [
+   "b962171e6df3b486791829ee665502115aba9015",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html": [
+   "88c548adf0875e0f6164d55f9b0b9afcb4aefc59",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html": [
+   "9a29ad47937b7ce998bb0823f7696e3431155508",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html": [
+   "4f7253c25a8a5f32b2dc22c03b4ec87d54125b6a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html": [
+   "b3dee8cc5fe89c1fec27c07856141bad6d47bf59",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html": [
+   "75a14d71a0bb826df7cfeaf4a035f922a1759a05",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html": [
+   "7c63fcb42ce9317e99c4beeba3f16cb9dfd6d199",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html": [
+   "c05a4c9c6903d82b0daff2d7240aa8c6f60ea3be",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html": [
+   "086d5904c0c29a7ce25dda989913f87d0b7dfc82",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html": [
+   "972017b054c3df4e1ba44df1adc2a84a22426b4a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html": [
+   "5ef3f2fc609562e395fa8c3bf03ac285df13393a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html": [
+   "b64c282e4356d9d84aa17926303afb3f242c9a1c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html": [
+   "1f2512faf748feaa6515cc52b085cac2f56f954f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html": [
+   "7244d148ee7a69a4cfb36af96f7af01509dd1004",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html": [
+   "2e692b8f51533561d1d2c8aa30a1bab7176e0976",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html": [
+   "747e4a39370631c2af34702b5b2ff5d857e46f07",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html": [
+   "3d83d2305bbe1fbe79e0761c65a5aa41041f4506",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html": [
+   "2afe68e9280415fdc8bd07040425fb4efb291382",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+   "a6f537f175e4a1f0b7694960c0bc995572521cb8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+   "86b2620d90511c9e7f3695d9377e4cec92e7fb75",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+   "1b6f97649943d1e305cd84a18f88962ddf3b8d97",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "74320c80a8352234a8538ba3c99ec127de475a5c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "27c78b1acd0b7d11ad92989821dc2ec11ca8cdfc",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+   "9e475ea1d5b02972fac1d56ea3b529f61b9bb5ce",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+   "ea75a2987adaf59a6ca29fc25b0eb431ee0cdb92",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+   "331c30ea67f6b62895b2bd0688f12c1b63f24e7a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+   "65920c7a3913b0e6020353955d91003c86f9aa0f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "a4f455943229ff5a9843c21040d683b43748c7de",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "50861fe7082e29a06d06395caa36d522783fafec",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+   "95a0c8c03c4f2482ffd6a5e209d68f71f0e93f62",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+   "1adcb1004b73cc53b00afd730e0f0417eec12e4a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+   "ad9673edb75938230973175d3ddbcd3171e29730",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+   "d49bf50b465084ed82673b4f7ff6fdf021b106ff",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+   "269ac8f825a9403fc4e6aa3c9cd23f0a754206bd",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+   "5f550fdb2fc918b5c54ed84a2ae217036af7b57d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html": [
+   "973e6a05502ef9748f135ba31f9365b884388855",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html": [
+   "07240599c8b9d7f3ff04b3c4de31365215d579c6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html": [
+   "98dd2b22abfee4f8d76f83ff2eb95a33a171df72",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "034c0d499195effc6f18f0850866a53dc2b91cf2",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "8506cff81ca58e656b41772dc69597c138c1bedc",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html": [
+   "b2d0ccb2ef2934b18a336ff4328281d7f9f7c425",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html": [
+   "f79fb6061335e48bede780d1b01db00666eebba0",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html": [
+   "b2c65b916e27ee39daf573178639422695c6e98f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html": [
+   "5db950ef6173e2b73523f039d9b0172c532036d5",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "cb0c92eb930387776f1d9982c12e3125e928e122",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "7b4500d2efdffa5be2ab856659677575f93cafe3",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html": [
+   "ad8ce8ada33961e22e20e41f8b76f652080602fc",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html": [
+   "09e04628762e4b9158b04dbbd902ac151b251f8e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html": [
+   "97aa7c0989d2a269eeb6ade1dd654cfef2c8d9f9",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html": [
+   "18e2cac2c5b5f3bdd9cef9e4da461e9d84623220",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html": [
+   "c1b01545027a0f8d14790f180f8510b3c28dbd2a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html": [
+   "caa7e1d9e52687f7a0a3d687f1df1cbfbb412b9e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+   "a3fd164bafe4d567b3a4c33018b5f6363d37055c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+   "d3b334d3b6b1ab41e086d60a81130e0eff48ba7b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+   "e1d95b11f72b7f965fbb79f6eebcd3197f75df7f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "49a78b0ccf9932439a9fb78cca1a02b12c52e11a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "ebb61bf712ad4b411941384f85bdc74209f51816",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+   "d39439883e45f38ad9099f0060766fc6afc1a817",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+   "bb2467f6754adfa6baa22b68268729f02f3a7b39",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+   "02b88daec66853937f0a35ef6120ad8f5e9a2e3b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+   "95424dd40fc657ccec7686653d10f99af3b42912",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "01005e24f33d6c995e51c86a39c7a1e4ed95fff5",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "76dda5d824189a1b9e1896a01091e421530a28f6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+   "5a794cfa43f66b16f4e588d5dda9d67222e5b5c0",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+   "0d8ed7ddf9d27079bbc09e61435e3c07607553b2",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+   "93bcc8f6bb6e5880f5c0242f22f0b383a052b046",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+   "27a35a92bb56a52bf6fd1a43ceedc6a5173c7cc4",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+   "169b60207557ffcf9484377845341e6c0caf9c3f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+   "6fe020ccdf3fbf1544b8570cdccdcc43f2a4f687",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html": [
+   "5e25fbcce64a30a669f3df4d9e277186d3c950ce",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html": [
+   "db57ebbae4087db5ff44a16b32d6ef31867033d9",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html": [
+   "426f6d11a08ebb0424a2ac519a2bd17de957d72e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html": [
+   "746c5e0a2f3f7f3f695b2a426d4a2f1eae7d6ca3",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html": [
+   "22c37bfe5e900562ca910cfbbda50f0c176929c0",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html": [
+   "1caf3ee26e8d45cdd552914bc590b524a5658ca4",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html": [
+   "789b1db61941110a7b397a8ee0250f5afde97d4e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html": [
+   "68f05c5c0b4ed8504c6c11f46d0c853790655860",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html": [
+   "b16af6a11614c52163058696ca322b2523cefb30",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html": [
+   "1df1732f9f20aa3cf6ab9959e9d5201ab3572516",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html": [
+   "5e8f0321d46a4f38db9d6639f1c4241a376bc064",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html": [
+   "a2a5ee24668d11307ab0219133ee6ba112f14903",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html": [
+   "a36ce68ecd4e999ea798b3fdb9f6e813bf002313",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html": [
+   "50cef3fdf4789633f483573f7625a4c3d395a985",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html": [
+   "64013770f535e9a223ca4bb811d82fcc4415c428",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html": [
+   "0a7522a60522d2ee0f63e3eb576a30c57e07ab44",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html": [
+   "f4ecf9e72e31c1901bc5f78130c558a17243768b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html": [
+   "d27594fb9b603be181f72e796be00ee3165a2020",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html": [
+   "f78e7b8a688e75e3b6f751075bc9a153437cfbe7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html": [
+   "7566c575d6d3bd71fc9949deda74c8105a07a8cd",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html": [
+   "7041e4cd61353439e6a2ef673dc667791567baea",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html": [
+   "67daf36b9e1c0075b51078475cb497d1bcb56237",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html": [
+   "ee0a21cdf6546cacefc314a3d3dc72bdb7cc7771",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html": [
+   "98e6801514c65ba4d5a4311c7e85f576a581b412",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html": [
+   "e254449c117a2452c98642ef45fbd6ee67513eab",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html": [
+   "1d98050db431054eea154a7d8768ae87bee596bb",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html": [
+   "cc68d00e624c4af8aa127543bdb3c5c493242231",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html": [
+   "93ef3c680fe3b729adec328ddaac98c9e5856d35",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html": [
+   "44a151fa461f121efdf163540c80e41adf0b6bd6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html": [
+   "7000b2c39f9db141b6aaff60759382958ade6656",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html": [
+   "a2eead773677b16f99658ea666601b83d8f47dfe",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html": [
+   "3a891942bb29bf0c1cea109e729c74ca587fb6eb",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html": [
+   "283bd24f9be7ab0d627f99b675a9252ecb46f0c6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html": [
+   "1f03d22999c08aedc8160c0639f9976a5c71589b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html": [
+   "3ea9eb9017d540cd6c08cb04d23869c0f5fa612d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html": [
+   "c22b6f66ccddd2c39280dab68ea148b591fd0406",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html": [
+   "87c589511998302eaa98a858df9020386c7663e2",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html": [
+   "d557c463572d34bf75abd795779b066a0a3675ad",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html": [
+   "2d529653f386bb5590d233710937fce5d134023c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html": [
+   "f75e8e7f20eec9fcc9091fe9aa315afb6dc953a0",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html": [
+   "5105b355bfa431a230edd4145cbbb22386c1c669",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html": [
+   "1e5417ddda024efca0951468748b855e35961924",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html": [
+   "82e77718d775d8592fbdb816a3b47c88698cb990",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html": [
+   "f158ca6ab726e905d7e587b9b1b833826b45581d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html": [
+   "ffcca16ea74d7de58fc8abf1b3a485ed6ae45dbf",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html": [
+   "4ef7da52c299551b9277784472a59499e8b3864d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html": [
+   "c90600de1180bb5307f65c6ccdacac6efa44d37b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html": [
+   "2229564c4ff2493edf7274c663365d29c3e01c92",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html": [
+   "d631404582ec4698f54ab82748e5287f45eb6c4e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html": [
+   "9b9c193387d172a3e051d720142f73d52d30a786",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html": [
+   "c3184980f1394f5701c11d03ee2acdf9f1d9ffda",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html": [
+   "22858a5e17938d2187f51ef6fbed97308bb905a7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html": [
+   "02d815b285de851b2382b403202003ec2061b839",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html": [
+   "59d0107987ebf2c6cb3c0b3c64428391e38308ec",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html": [
+   "7611f0c0ccb02382fbbfcd26605f567c5bbfe4ca",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html": [
+   "62360e290cd28db4cae1195ca05aeeb34ef27efc",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html": [
+   "1f5f6489d3af4ddc044ecd2f1a550465e03d0c39",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html": [
+   "4f3add3f008e17107d51fdbfda354d4309832524",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html": [
+   "4dc0e6d514eca55bddcfad5db41620dab9c7b8f1",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html": [
+   "4dda84412e2009a78f96d6fc01ab82d0c636901d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html": [
+   "8eac0309834486fbe960f0f9501c4be4c8a0ad9e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html": [
+   "fd6a3dfc2515bdd1ac7646391964de1f87d9ac16",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html": [
+   "09c1dfcecdbd65eb34604904b5c4b8e86e52238c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html": [
+   "5d479a21df68383ce7d9e40018fcf9d10922a366",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html": [
+   "bfd916d74b0491d1c3596a5d35e299e8f73181f6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html": [
+   "b86ee7e3856c72475ac9b758c9a00c58ca9fcc73",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html": [
+   "6ce7c97c7e27f917dbc7353c0e4705940d2caf90",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html": [
+   "569ba812f8456c43d819f8cf978c812028b2f859",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html": [
+   "d6c2712a1d2b14e83795f4db1b8edb1d7b7d8168",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html": [
+   "e6415f4b5eac7a2e67dc5e3c5eb0e04a97cc0f1e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html": [
+   "5643bee8c84dcacbfec590db270fa8974f2f50a8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html": [
+   "929f9a937ae371b7bfcf2b95031e043a165aba9b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html": [
+   "221ad2be6e537956e528c67b49f361fb2fd3c520",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html": [
+   "db0b3e6b74e6b7321a7f0d567a4e9730ad01426b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html": [
+   "44639bdd28af90075d0d984862db2610fb0346c2",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html": [
+   "fd93d32cf35cf6a5211e515a1c10fa3bbd1961d0",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html": [
+   "89bc43cc723a12c5b1818668a496c52623d9291d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html": [
+   "4ec3d90cda93bcc6ecd5a269f0238034e51cc1df",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html": [
+   "420d76e655403cc127a1481412117bd0e6d3b82e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html": [
+   "8d243e77f6d1183f8c1ea6cc99c18da4ff87a4c8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.keep-origin.http.html": [
+   "1dc719efe5593da47e7dbe49603ece6c6a038871",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.no-redirect.http.html": [
+   "2136d9fcabbbc11ccead669b65fa34ee05c5081d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-http.swap-origin.http.html": [
+   "0689e03855087f069817f21f84609834cc50ce62",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.keep-origin.http.html": [
+   "4aeaf47723430bad32cc0453c2c613e782d6444a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.no-redirect.http.html": [
+   "5ee203b76fae6769bade02c2ff7191372a3c0a0a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/fetch/same-https.swap-origin.http.html": [
+   "8c1c8e6b2b4d12b69fca2e982149df7f3800080e",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html": [
+   "0feeb305f722d93ae7e4fbfe9d04bc610dbed5ce",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html": [
+   "51fb18edfe72121230949ff3f358a024cee061af",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html": [
+   "364a03ae5529bb784a8714871ebcb227f4757876",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html": [
+   "dcf6bfbf1c0da5d444e90d03c975fa9492de090f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html": [
+   "61fe4deebf76e6e222328ce1a6c436cdc65f6894",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html": [
+   "6c70039b1f466182a17b595c7408e289888a88a7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html": [
+   "a54f711b8f5f1c448b3bd4d1752267d2efe80346",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html": [
+   "25e9320df5c402deba57e43f36eea0a3077f7b2a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html": [
+   "198552217460a79b1604407ee96873896eacdc0f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html": [
+   "c01c5e96eebe7a27057bd8d70f2c67baed213908",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html": [
+   "e8839b93a3123c7c6f72ba8070269eaecc67f4f5",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html": [
+   "c3e3a5209dc01b42025fedd22e716e9f679497ea",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html": [
+   "b8c03e924e19c702f4175e548db9702f13acae7b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html": [
+   "7cffff93b689794e0f493401150dc29c73d22199",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html": [
+   "581789cd22ebe312a4ded5a0094f4949017da0ea",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html": [
+   "a7fa4e3d2a0b8e8184936b66b16f6fb6214721d7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html": [
+   "9822fe843426655fd245555e3b035f277d4a29e8",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html": [
+   "6b465939df7400c940dad441571981b03ca28383",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html": [
+   "46e82825fb336b8cafae0e45f71b091a72e71b79",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html": [
+   "0756276d9e0a8fcc300a2569952251d23eefee59",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html": [
+   "9f814fa852bb431663ded0df930be9586d8f8cdc",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html": [
+   "129e3c560a4d0a7ac2c5fde2261161d4d76ba91a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html": [
+   "af8a97d1184f1cd61a26be60875211d50de1b2e6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html": [
+   "40fa08862803b41955d5355b58f17eb88fef47ca",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html": [
+   "9dfd8683770a17fa70b4d4c7938e751bdd5f520b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html": [
+   "64df30a885892f3adca158dd9fa665c9db66b9f6",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html": [
+   "34be694e3faaecd6442f7bf0e7fce32fa07195c9",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html": [
+   "a08f1b2191cab619add9a575a3343ba8f39b081a",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html": [
+   "6b57a550032cc399c1418ab446f00a99f7508d43",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html": [
+   "f900690ec7f7a77551aed8303632b4edfd046d57",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html": [
+   "7fa850eea50f55cdc5d894e8523b305956bc8a08",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html": [
+   "68f01c719ae05df163455717cfa264d5f039f51c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html": [
+   "dc95dc909b7eb480737b6c38b7a766ffe80fad5b",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html": [
+   "1cc91cb6ead2aeaa3e59445bb5e2901f8a0eb256",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html": [
+   "d6809deb530f094afd665e8b6135b2f78ec56f58",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html": [
+   "b78fc7135e4873bd284d610bdaa9f7f8961b4361",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html": [
+   "c8a46e5d191ba9d332292d02d762c21c050977f2",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html": [
+   "82789e2cde2ded1f459a17ec952802d996cf9095",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html": [
+   "8c84a954c66ccd71ba9859924ad4c9e5bcc7d8e3",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html": [
+   "97545736fd9ac7d3cff7028eae72a7c999870c7f",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html": [
+   "a6865e346d079fe0dd05a53512cf97b768b88375",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html": [
+   "7ff5670a5c266ef63fa9b6a9b62751e753ecadae",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html": [
+   "2eb093834d68d9592c9f1a352a7aa4e40d073cb4",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html": [
+   "3462597c2f1355742879b6650f8a5fc1e5800f8c",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html": [
+   "92503762400a3dc776e8aadac650844c62b9f1dd",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html": [
+   "1ae3ec326cf0b67abd23dc9fea52bc8e00fff6b9",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html": [
+   "d763c5f63007b53134786a5c777c76c541aa3756",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html": [
+   "3e4776ae7ffa6eb39e7b70b2d203723b58f00cb7",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.keep-origin.http.html": [
+   "984888d1dcdbc9f9eaa22483475caea825e1505d",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.no-redirect.http.html": [
+   "1012f88acc17ede9aab6e0a0600578a2b55a68bb",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-http.swap-origin.http.html": [
+   "293f3b81485adcaa5a67d0f10b23cbfea0db0aa4",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.keep-origin.http.html": [
+   "564e62a6e5d626179cd596788a254b7dc59f4e27",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.no-redirect.http.html": [
+   "7a83e94487d88989925eb7dba6519219ed543a26",
+   "testharness"
+  ],
+  "referrer-policy/4K-1/gen/top.meta/unset/xhr/same-https.swap-origin.http.html": [
+   "446cf9824f16f96757272bd1709b4ee217362bb8",
+   "testharness"
+  ],
   "referrer-policy/4K-1/generic/spec_json.js": [
    "39cd997338e4c9e235d30097d970daeff5f1f19b",
    "support"
@@ -496440,6 +513343,2858 @@
    "5dc2085c62fa48787d4c16da422e3551eb844630",
    "support"
   ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html": [
+   "a9fefc5335af633cc749052583b5ba1bf7bc5b2b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html": [
+   "fe269b591dfd7f61376428d3170b372d2fe0e974",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html": [
+   "bdab90c3c9350a4c199d5c9e1cb87423cfdbcad5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html": [
+   "2166f0dde1302eb7b11fa70c90ce368a99fc48e0",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html": [
+   "f2729cbcb52a9dff929c41705025f48788d7a687",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html": [
+   "a73e9d11a2f5684b18d938295e6559e5da181880",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html": [
+   "50ece9cadcb21883d074ca28df29a160d64600bd",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html": [
+   "c955a1fea18f1d583bc317d84005b6aebd6dcfe6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html": [
+   "f71c3b2c16cdb8ca22327e2bc4ef8bb293f3d7b9",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html": [
+   "882d65711a8da86eea89192e43cd7062c32f4a40",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html": [
+   "d4f39f9242a7ec2a79a379e31bacc5589274c566",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html": [
+   "a7b0e7f266d128e064b38e985d7b377a46fd9c17",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html": [
+   "32c268942da0657b689d96e1d655cab8eddbb4db",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html": [
+   "8ea4786c41949c85a2ac78ddb181a442acb93abe",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html": [
+   "735489130603e128714673baab6bf6b3a13df0a6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html": [
+   "823c727cf7ae0f2899de63a336b62919d827f769",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html": [
+   "79b9f206b13812a700ecf1b30e14ad7b331f0338",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html": [
+   "28b0287a6696c577095b801c4f211c33351570c6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html": [
+   "1d0b258f03a6aed6dad5610677ce51489bbf412b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html": [
+   "8eccc5675503fcc94f9884eacce44cdc15d2c3dc",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html": [
+   "dc5b1c64ca895806de628e173ab27ed68d4fe3a3",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html": [
+   "98ff9597c559acc581330613683e7060ad8179b6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html": [
+   "de37be5b870d300cf1730de2541c31dc04577ba5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html": [
+   "4d034ab49d405bd4108189d11a3bf99ed6740f98",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html": [
+   "a65b56492b870cfcb7c163dd43b8a55626982a20",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html": [
+   "2503c58f6e8ef3624b82f1e1db9cc5488ac53922",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html": [
+   "d8c793f10a1e2fcc73bb8d4356211f013b1f8df6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html": [
+   "7ee8f923b26562200d5a00069edf827c0397eeca",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html": [
+   "e59b8f7e55f2ab9f4ff5a50f0fe941526c87da9d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html": [
+   "e8c78a21f28589ab0d14b7df3053dab014d1c253",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html": [
+   "9324cf727db196f2de803e9a11fbe40d8a02ea5f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html": [
+   "99ce0e996b6fb6f20f5540dbf800911072a520c9",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html": [
+   "8b1306840e5326a5526b0c7e54a1eba3fb6dc7f0",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html": [
+   "18bb216bcc6cf1f739ca0bcf46eb2e832e32e050",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html": [
+   "e3c20928d7180533b36340f526a7c2ce9f5347a8",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html": [
+   "a78f1b9c0f7d18c0f949c450c0d62f3e0d3ec128",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html": [
+   "7f9a2bf57b3d2155ad1146047003c45235996067",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html": [
+   "0027a51ef746f2e4d4dc7b8804c3c5f697b56498",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html": [
+   "dfdf17ca220cc4bc21051d43a230253c628de41f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html": [
+   "d84ed7e107ada8431f2ec2773aa9d41a3b27f7c2",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html": [
+   "b2f70707cb3eb162dddccbd92359ba2b61cb4e86",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html": [
+   "b8c847aec05a26a9a7893c1bc419feca62fb0781",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html": [
+   "ca13a3b60fffd995a58f2067f783a3c6b69fa54e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html": [
+   "b48d1202cf7e6a4bb87f87659e131ccc55634e0f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html": [
+   "132ab1033ffd4a14c4015f5dd0f7a6fa0a50873c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html": [
+   "dfa840a3516becef62be8f2ae2bf9f94632d84ec",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html": [
+   "3fe9772e601a83dc68b15c5e0106e13a0a48f337",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html": [
+   "a260b4b2ebeb5781415a19d87d9cdb2c933f6bf5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html": [
+   "e8c45deba7f61d1a95d9b2bc46feab70799f4406",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html": [
+   "1992b36e8589a2024ab7ca425db5b086f1632c66",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html": [
+   "a0f774640e657f7b0cc667f7491fc75a158347c4",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html": [
+   "2deb7c6b4816c2adfc7e8a9c14a0438b0714f589",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html": [
+   "2ff9d5f36b1809fef703e0e6f7486588e326d22d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html": [
+   "4c6a9514b42b14cbe10ef6f9f750a8ad2ff42b2c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html": [
+   "2a0fc0f623ae23f8363a693836a93b8375cdee40",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html": [
+   "5e88f7341ed42d82ad96be1a11092086e86ee5c7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html": [
+   "7d8a4afc069e7cee747e49ecbf700bbb6027f501",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html": [
+   "c7f60904e180ee2a562cc3cf531878b9b337dcb4",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html": [
+   "fdfb72931fc5eab62c25b9b23176126483a598d1",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html": [
+   "47666106781b4defd16c2e2c8381afad19cd1d09",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html": [
+   "4f08a622acc911f821ae2c59d04be90224234cdf",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html": [
+   "436de59cab0fcb6fac0eff285d2d758f9de167db",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html": [
+   "a8f54c1702b9def80a180ff76d5bc576817c87f1",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html": [
+   "6757257a17bd8b0bb74a2542ffc8249ca806acb6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html": [
+   "2faa3f2f9bec613309b9f096684fafd9c95aa093",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html": [
+   "69d15044350b0e77ffe65ecb57111777075c6fd0",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html": [
+   "12959fbf9a02c7c0d454f60176c32e059a786b9b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html": [
+   "b5183cb38819e1d5d0c5db15383b05080c8767c7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html": [
+   "ad4a1bcfea27a73b927f7c46f90ee5a65632dd90",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html": [
+   "1bab6fe776233abe35c16a50bbf450fe360f8720",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html.headers": [
+   "180358e691bd449b825e0c8f199d919dbd90c270",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+   "7f35dbbacadfab47de6c1f71446db58d4c11bb11",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+   "98941a44ab35a95cc09531958cba9d534457d5b3",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+   "ad62a678ebdd57eba801b6b6fa5826d9e9ded293",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "866d3b13d38d92c37e7056e5f5ccc598a360d5a2",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "bf9f28ec80128417f9a8c9961d1b72846bb01ad4",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+   "773e5c81b5289815f54ba0d99aaa650e85290c06",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+   "15fe7d07220abff2a9674c156d19623e9b355003",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+   "9f24d9bde8ac47e0cf0bc91f3e0d2e18cc4cdd2a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+   "bffff9be0fb81e58fe6add5f0f9bac2ecdd16094",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "b92a16dde62fdb9ac9eaf7770e275f7f7312660d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "cb11dfbefed640a266f1c82b70d6250b867fe8de",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+   "49182a2c2c2a1575650c05d84b0f53433d132779",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+   "1e1559eb973418a716da07f82718fd167673f7da",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+   "05963c2d9f2c743c86dcee6989c1de4af4b84af9",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+   "0e7d536ab26e216cf2e83136b7136f4586016d60",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+   "ab8585fc56cc740539738b9ab4a8a8b7da7b5089",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+   "c9511876c9777221affbcec30b07aceb4de3721f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers": [
+   "a15ea7c65c8647c29e5ac992286568aa8dc013f5",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html": [
+   "4d10d3e4396e93dbf74a947ff987c538d79881a2",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/a-tag/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html": [
+   "c396d388206c92fc6aadf0d0ec492c11fe1991a7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html": [
+   "7f902f70e03461aa42bd8b895e2cfaea530d306a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/fetch/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "34582b4d6dc924e296a50400d837464ed080f29e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "9fce73c9d5845861e9f7926386dad6c9b4df1e25",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html": [
+   "43b06e91563df5253103f5d4930088ef478b0544",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html": [
+   "0b4d5a1baafe13d4a1504f97ca833258f5cf062e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/img-tag/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html": [
+   "9a30544bcdf04c1de519cac068c17eba63b72c4f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html": [
+   "da220eb58257437a5539bf175b4876587b39f72f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/script-tag/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "3cef1b4b3229dd260c71047746da3a2203c60b27",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "305c63c7a9a04fdb2f5b46ab1247bb2b640b25be",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html": [
+   "cfafc7166f17c644adb9dc1ba9654bee501978a6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html": [
+   "2eb778279dcc1afedc6c6054d51974aa33ebb92d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html": [
+   "88d31a55ff47f4203d4588cfcbc2039418fdff57",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html": [
+   "8e987ecf3dcbdfdb55a02ece03af3ac8509edcf7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/worker-module/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html": [
+   "6b99399a7bc6e9ca0f4172333f1e08301bffc75f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.keep-origin.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html": [
+   "e5de56b797bb681dc8506c7c772a902f2c30fb22",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/same-origin/xhr/same-http.no-redirect.http.html.headers": [
+   "be66cf9321103b1397670f3acc89cecc09aabec2",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+   "3635ee6c7aacd71bd49181075b0db8af75d9cb96",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+   "0645477144fc027e043ba3f7cfef136165fc83e5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+   "4fdb3e02e2a4ec127220c1533ef9776a48074ade",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "35749e37f9a956b2a1465e793701e7b2d6009e6d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "a5e4575a2949e932c11db6c245bf52ad1785c822",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+   "179e958d3f15f99ee22ade074fae4609c046720b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+   "f53ad35d86b1b8a5d13f5c2f9fa082d83f48730f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+   "4ad7dcfca2ffcda71cda7acb6719bf27fa7c71c6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+   "a5571e07a5d4a6105b8f3cf37ce491b37bc8d58b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "22eacd003b5dce0bbe2e1702a1b44c5537a7537d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "a29ba3dbd8bbeddb59d8e9b10518f60f798c61e9",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+   "4ab18ec26d336ae75db76c2a1918e633afbf7475",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+   "a5e08751cec988387ec8038529e7c50bc8eadc70",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+   "a8babc7eb40aec10d5c8d833089dd07ed1aa5753",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+   "346654a54ee3cb5a9e59667518344c980c87db6f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+   "7df84deb40e3a34d0c940aac9dce7ac6738edb95",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+   "d6490256a0ca31ac390a9386fa00369f38d3f56a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html.headers": [
+   "4cff1d12f82e028f7f1e9616bfb539ffb75b1df1",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html": [
+   "b49b87c3fa4a4a5ebc5f92be3d6beafdd85a0826",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html": [
+   "29a1698f1a8e089ef301d70817f1b5cb99acb645",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html": [
+   "16252eb3e89653ee744fd85ba2053544b95f7042",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html": [
+   "75e4b8de7065a4ca4884f2c7926d27b30cecab51",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/a-tag/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html": [
+   "9922c8bf40044cf339cabfefdbeec12dd57a147f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html": [
+   "3e77a7bda28b35fe1d5691947aece2209ae84320",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html": [
+   "9789b3a8dff9ac099aaf2d39eeb1935eaa18f459",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html": [
+   "7d00a136314cab6de1b4e9d7d9001df7714f6c98",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html": [
+   "e5182860dbaf24026fbca9dbf87f005d927292b6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html": [
+   "2fda3a8680dd2604ee6608ba1ead1de8888215fa",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html": [
+   "8de62ae9dfae8b5eed58038a765b80f45fe1c8d3",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html": [
+   "bbd7003d9b0c9a9b23c87c373cdf0e678d54a29c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html": [
+   "6b49c22ffcf18ddec09e5879f338d81218c2b519",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html": [
+   "8467efcb78bec6ec670d60600cb06541e872e10f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html": [
+   "b86b55cacde8cf1620f30306466ba2927bfd4de4",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html": [
+   "09fc8694fd2e9daa886a3a705316a80e88592bf8",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/fetch/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html": [
+   "6d2446f7cefad381211310d6b8afc13468ac74b7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html": [
+   "fa7c97b5773f3eb747ea2bf601abf250eacab6b9",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html": [
+   "864ed4d6f0f36b0dc4e69ae4df427fa567a99981",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html": [
+   "31857f5b0204562f1428aa52e489422b221379c4",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html": [
+   "807c2ea5c8fad5877f543cf626df56e8443acde9",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html": [
+   "fbd5a0e4e87ea3606d0799c93997956130c3ba19",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html": [
+   "b55aa725186266866055d1c2103d7485199899dc",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html": [
+   "7fb7b273d7ad36efc12186dcd61942501f8c94ef",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html": [
+   "7ef73d70001573f4ec2fce43efface6607fb508a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html": [
+   "a3282d26e16f964196b0e12d016f14da7fc02c6d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html": [
+   "d2fd9f3884920046ebee66f3cc2c5fdaaad3bdf5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html": [
+   "05d5e333652789047d3af01678f2b9e966a6df06",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/iframe-tag/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html": [
+   "54aec1435f005e5393b940dfd40add6a39334475",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html": [
+   "734b5e24b4f0136889499c09ce770d891035c070",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html": [
+   "e66736a1f2ae91d6746ecb9e83380f04b674b449",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html": [
+   "03351c7007e88a100dfbbd4e1d983ff7c444c436",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html": [
+   "a870fa6a4c29ed5eef1d057d46691850728df673",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html": [
+   "3d61543525a871c4ab8c881b70047724e45671ee",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html": [
+   "6498c9b73b2ef192c7832840e0d908234e87989e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html": [
+   "98126940adcad13690c126daf17a4a22d2d8bc26",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html": [
+   "04b442f199f01d7d42041a0e2e92c2daa086a528",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html": [
+   "04bb78f23850983d2c992d0f61c654b5a71b3f6d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html": [
+   "05e88291cddb8d26935820016ca0d1b5ca8df870",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html": [
+   "6cb89d4113e768b2267dbd4a4aa4987fc4b0333d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/img-tag/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html": [
+   "09ba06fe97a4231bf2fc7968917a7824cf7dc07d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html": [
+   "5ddbbbd0097d35d4b5c1f2333c0134cc8f1a9d8d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html": [
+   "daa75cd9dd25a2a27d5ef8fdfcf91d38a6e52bb9",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html": [
+   "d0159817d0c12c71084f9a88bd734d155f2a4d08",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html": [
+   "92fc05e5a5889ca9a3ce6ad5f1bf658cf5bf3675",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html": [
+   "cd607f7a74dc100c476c9256cb0819ed7a8bd605",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html": [
+   "508066029a14293579f7f1a684843a8f9bc0e331",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html": [
+   "fa1d48ed60db34018454e5adf4ff60328e99ed98",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html": [
+   "b0aef7fcc7c56f43b37548c58763d63706ead90e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html": [
+   "fb5aab72bda75511d8bdb30b40098fa6fa981469",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html": [
+   "5975e7432e3779ad3e7809bebcc8d8ce018cab0c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html": [
+   "45506e97df70be8458a6d68859af2473ace271af",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/script-tag/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html": [
+   "066f65c071563010975c738330e3f3c9264e86f3",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html": [
+   "5fbdf424f7a810491a95f84be7dfbe71bf414638",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html": [
+   "8dbf224a261f9bb667c743ac065df108a4129be3",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html": [
+   "eabdcb1011c41704d672e6c34937b4ccb3268f7a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-classic/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html": [
+   "ea0ff9655d5574a5d2a092e8a9c924186c224cfe",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html": [
+   "5a99955c352669dee0802e20a27ceef9262641eb",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/worker-module/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html": [
+   "6b136600885d20fea309c073019a25ea25d351fe",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html": [
+   "a802ecb55f090371ec6f5f34a3d8247bd7e88378",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html": [
+   "fb18a558fcb2a3e26ad7c6ee3072ded31b437140",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html": [
+   "44b1ad4136ee11728386bd3ef6e52c892064c241",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html": [
+   "fb68b2480433f92f820db4f891a24e0279d8261d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html": [
+   "3f208548366a8b981f682872883c9b63ded6b131",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/cross-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html": [
+   "067b74f6883057ccf46da93a3a950bc0a46f699b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html": [
+   "63e27261cb4c09bde920a805b06673d8cbcb6746",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html": [
+   "9f2b14305fb8e602576770e387cf4a61600e4460",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-http.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html": [
+   "b92e14939a658e596d7387dacf0c6945695c04ad",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.keep-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html": [
+   "16eee27fee34f78abdce2ac57e2e3a2acbbbab96",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.no-redirect.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html": [
+   "9e18ad80906edb3a8208b74b8f628ad68646195b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unsafe-url/xhr/same-https.swap-origin.http.html.headers": [
+   "c1d3fd1a0be2609a6939653a3f4ce6f5036b6286",
+   "support"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/a-tag/cross-http.no-redirect.http.html": [
+   "e1b9c071a8f0d47be4190d7aeaadadc7f84068f7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/a-tag/cross-https.no-redirect.http.html": [
+   "9df9f18a5402cca2377e23a10b36cfb93233a238",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/a-tag/same-http.no-redirect.http.html": [
+   "b2111079c201ff3d7511d8aa3f51096893b72432",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/a-tag/same-https.no-redirect.http.html": [
+   "c7aa9dc13c30e6354300a8aae2a02e634eefc0e0",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.keep-origin.http.html": [
+   "929c4c594d67838a0d477946194f6eb2802a4a55",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.no-redirect.http.html": [
+   "b2fea46787d457d1f0f24a4b430b241fc2d09b36",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-http.swap-origin.http.html": [
+   "e08868bbb70f823b2cdcc9673632cd916f2df34f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.keep-origin.http.html": [
+   "827a4543138f99155643abc15537c0802133d559",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.no-redirect.http.html": [
+   "ced41a3b59b3a191f57cb6b508562fdc01ba6613",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/fetch/cross-https.swap-origin.http.html": [
+   "ab873760f224a8d3ca0f77abab26e462da62f711",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.keep-origin.http.html": [
+   "47153305f55c119775ca8a8d6db2146cf7e97373",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.no-redirect.http.html": [
+   "76d4705ae5daf194c62a8363888b8e0a34ce5eb5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-http.swap-origin.http.html": [
+   "c026b45fd061e295b4435f1285c4b6d383e0af00",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.keep-origin.http.html": [
+   "6870f2cfd072d9eceb74c333dd3bdf2bc01598c3",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.no-redirect.http.html": [
+   "1a3acf28dffbe052d51ce8d43f8bd62cfd19a575",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/fetch/same-https.swap-origin.http.html": [
+   "87981d1c661d9790e5f4226527b218dbfaf788e2",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.keep-origin.http.html": [
+   "186d94ba8afc97c85e6c0528d7d7a1257f19e0b4",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.no-redirect.http.html": [
+   "bfe3c149eaeb98bf8fc32bb2d8e4034c8f8f3f74",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-http.swap-origin.http.html": [
+   "265b108c984ca2a7291664db6a746653d98a9ec5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.keep-origin.http.html": [
+   "51fb8801cf2caeaa653ea9dd9e95be094955f677",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.no-redirect.http.html": [
+   "078b803684089ff2d9529a0bdf25514824a883c7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/cross-https.swap-origin.http.html": [
+   "078aef4c736fc4a85a370c387331aa18dd369e3d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.keep-origin.http.html": [
+   "65b6e912cf336bbd55a8e51b4459c1f2c278219e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.no-redirect.http.html": [
+   "7ab79f00ab26e87c076ad5a311cc5ca77bd1a093",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-http.swap-origin.http.html": [
+   "951b9a76ddfdf607db9afec9a98537ae0dc89c17",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.keep-origin.http.html": [
+   "c2e72a3c54572be7056e9185f256866c97879aee",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.no-redirect.http.html": [
+   "da910c915a7014fa06d0a8c54ce172a04fe2a569",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/iframe-tag/same-https.swap-origin.http.html": [
+   "be9b5c3979bd3336c3e3d1b2871506955aa3258a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.keep-origin.http.html": [
+   "69bae396965709166af06f1467320afbed05b7d0",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.no-redirect.http.html": [
+   "2c800d68d3ca032c0afd1f1aa813267535e65bf5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-http.swap-origin.http.html": [
+   "ff6aee7cf06c6f4dc9e7a5caecaa1d70e55fc90d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.keep-origin.http.html": [
+   "ce1ddee18daee5b2669918df19068f7e1746fecd",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.no-redirect.http.html": [
+   "63b43d13997a2628c7f3879e2e87fd814ad5a304",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/img-tag/cross-https.swap-origin.http.html": [
+   "ed497a1c8027e5994bbd8ecf36a47e8b4fe83415",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.keep-origin.http.html": [
+   "f8d97a0c86a823a24c47545e8454cc75f13ec952",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.no-redirect.http.html": [
+   "611164c1f48fcfa38556225d22c0afeed75e4f74",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-http.swap-origin.http.html": [
+   "c680915e28a19551cc6b5ce55e87b6232149578d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.keep-origin.http.html": [
+   "915a88cca84346a4c6c6fa3a4ff509478e7b0901",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.no-redirect.http.html": [
+   "28122a250d896c2406039d772e7ae07bae3e7f83",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/img-tag/same-https.swap-origin.http.html": [
+   "27553107eebeba6357530b602afe0c3b81b0a9e6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.keep-origin.http.html": [
+   "136ddb9cc68a83a3ec316052d03d6c9176631fea",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.no-redirect.http.html": [
+   "d011a885919b8b1a99d94141ff8a4412dd8a114e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-http.swap-origin.http.html": [
+   "d87d5850f0dd2c54dbb16e347b9d7fd3b43434d4",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.keep-origin.http.html": [
+   "2c6bf466298bbdfc59f9d7fa02185c0eb72030c8",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.no-redirect.http.html": [
+   "bf0589564b4e986935b1c1521838fde537717789",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/script-tag/cross-https.swap-origin.http.html": [
+   "3f616dec68a57f9a28cb68abd0eaa3c3abb33f0c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.keep-origin.http.html": [
+   "0b796055cbbd252d311b4555fa269848bc3e9963",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.no-redirect.http.html": [
+   "e903577c95a968bbc374df077dbc0b95f2bb4a42",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-http.swap-origin.http.html": [
+   "c812e2aa122cfead7fbd1c926427a242eca563c5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.keep-origin.http.html": [
+   "88b68ef5e00b5f6d67d90a45e23d2dd82cc27a94",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.no-redirect.http.html": [
+   "47a8bb1895359bd4ff39d063c05e57c804fcd45c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/script-tag/same-https.swap-origin.http.html": [
+   "a5e98f5f38e835452a67c5de9b5f9da3f7d7d77d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic/same-http.keep-origin.http.html": [
+   "3b6c78dcea428d1d00c95fd06051f62998860df6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/sharedworker-classic/same-http.no-redirect.http.html": [
+   "ca6f2485a9937a0ee9364ccc2a3d8841e10dd40c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/worker-classic/same-http.keep-origin.http.html": [
+   "520bea1e1fbbe510d745901c9fec217b65c21e48",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/worker-classic/same-http.no-redirect.http.html": [
+   "298248e21d6ba53cc5bf5cf591adcb9b33a29f5c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/worker-module/same-http.keep-origin.http.html": [
+   "3b6630ca6e7cea51492e9f68cf0c8b067a6a50c8",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/worker-module/same-http.no-redirect.http.html": [
+   "d6f2ec45a7ce85ff2f03748bd3db47c2f7a772d1",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.keep-origin.http.html": [
+   "d78ce1f66f4453118a3065a8f70287e281e58759",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.no-redirect.http.html": [
+   "314e15d4304249d5ac9b90bfd22a5fead4e03c03",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-http.swap-origin.http.html": [
+   "b098e917c936a58e3457f405a7f87a6ef0435439",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.keep-origin.http.html": [
+   "43f924c77f867f085095dc0e63ee01d7e8a83010",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.no-redirect.http.html": [
+   "10dc03fb0142ccf6cf89d98e764df16eb56fa9e9",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/xhr/cross-https.swap-origin.http.html": [
+   "541415c9546ce3e7b8482355bd9ebaeb94c3f4eb",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.keep-origin.http.html": [
+   "f9d4101186fdbfc0fbb055a7bcbee559e5fa29c7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.no-redirect.http.html": [
+   "fa92ffe6bd075112936d08be00cf0c210453ff18",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-http.swap-origin.http.html": [
+   "b1d2d924035a1eadecfee1c02ab883e834d47b9a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.keep-origin.http.html": [
+   "5fb91ef90d4dd93b2035a27ad8f0c311bc3a2e88",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.no-redirect.http.html": [
+   "135bf134a40c8687ec1b13cc7d99f85f20ce856f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.http-rp/unset/xhr/same-https.swap-origin.http.html": [
+   "db8586474b04aedbb244171c00d4ebd8ea90e4fc",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-http.no-redirect.http.html": [
+   "22c4900d10a6dac7aee5d243e30be1c951512a41",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/cross-https.no-redirect.http.html": [
+   "65a3ddca6a79f6a7bc237b8fa6c0721cfb502e09",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/same-http.no-redirect.http.html": [
+   "d1b3ebcbca08cba6165283c77a6f62ed3630de03",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/a-tag/same-https.no-redirect.http.html": [
+   "38abcd502d5549bdfcb30f6717e14052534bf8d0",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.keep-origin.http.html": [
+   "858abba8e1eda0bce1eb7f4ea66a361b98121f20",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.no-redirect.http.html": [
+   "e138dbac1fc73e7dc3b1a07413f966c77e45b7f0",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-http.swap-origin.http.html": [
+   "7f0a6399f57dd1b66bbd5567b4b72cff480e061d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.keep-origin.http.html": [
+   "9f271c5c46881a5f90ced1a11682249f9e1a9c3d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.no-redirect.http.html": [
+   "1be7385e46d76cad97a798eedb55630b9823d7af",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/cross-https.swap-origin.http.html": [
+   "442632c4b9bc9818c473609d90eae350e8b63c99",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.keep-origin.http.html": [
+   "6ef205587775d7037697e9d880c4110ae229ddd7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.no-redirect.http.html": [
+   "3bed586e83c598d156e6e07d03fb1d2d32e65820",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-http.swap-origin.http.html": [
+   "4a1f4291656ab6a999f615c63c76b75ea1cfba86",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.keep-origin.http.html": [
+   "c55848be7c1fe64e745d6357e2ab9e90867f2808",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.no-redirect.http.html": [
+   "d9d9b5e7622760c4dc42feaadf0107ef79b0f284",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/fetch/same-https.swap-origin.http.html": [
+   "8e814e27b29a0e3804897c2ad5713112bef146f2",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.keep-origin.http.html": [
+   "22ece65ccd1c1c0c8b45e4a0c46cf732978bd50f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.no-redirect.http.html": [
+   "40e36088e399553fcced18afbce4b8555fc3492f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-http.swap-origin.http.html": [
+   "ecfcf418c63bedd8e1d8ba27d2af4e307b66b883",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.keep-origin.http.html": [
+   "ecab7543b04fd3b4da10f49e254772c1d7ffd689",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.no-redirect.http.html": [
+   "c76f5c3bde415689cc1cdb119073fa8a65cc5f9d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/cross-https.swap-origin.http.html": [
+   "9041c1e8f5d916b5f5540e68bd559aaa1e79905b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.keep-origin.http.html": [
+   "db6c8a6681e5f622e9bf8275329c0104600244e1",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.no-redirect.http.html": [
+   "7a242da44b373384538aca46fc5f70d5d9c66879",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-http.swap-origin.http.html": [
+   "c57730703364851f646f77058d9d69eb47e9687c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.keep-origin.http.html": [
+   "39a65cf8e8f76f248d4cbcfa8b16decdfa266d4e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.no-redirect.http.html": [
+   "03588d7d3c64af047bf9c52bfdf0bee2f7a35af3",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/iframe-tag/same-https.swap-origin.http.html": [
+   "2253f93b1b36980cf563c5de71d8a714fac7e913",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.keep-origin.http.html": [
+   "d5ff6947fc5efc9dee25087a8095c17fe0cde85b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.no-redirect.http.html": [
+   "6e0e170dfc6a61aae148a3ac53fbebcf5cded132",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-http.swap-origin.http.html": [
+   "08be9fc8fb949b8d038947d96b999f4208e2bde8",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.keep-origin.http.html": [
+   "49205634e5931f877107cb3c25631187eb115a2f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.no-redirect.http.html": [
+   "d0cdf5ecde7cc69282d14929a20f5ec01533c128",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/cross-https.swap-origin.http.html": [
+   "6b1f98786e1a38a56579bb5452eeaacf035f5baf",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.keep-origin.http.html": [
+   "49d5b4143bfdd46cdb31e8658512386aa69a5963",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.no-redirect.http.html": [
+   "64ea5452cc6d6cfbcd394abdcb94fcdb8658410f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-http.swap-origin.http.html": [
+   "f193ced7bc8b44ff80a9fc4891b5f8c273062f68",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.keep-origin.http.html": [
+   "31ad993e6630b9a662aa1a61ad1828177a2ad72c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.no-redirect.http.html": [
+   "fed40493102eee955494eca04c1a5e3d30979e8d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/img-tag/same-https.swap-origin.http.html": [
+   "053cd8d7a3554d7deb0a9dbd8848a5f622477061",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.keep-origin.http.html": [
+   "35ed15e929b566394d5f8ec3bcb27058db047cca",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.no-redirect.http.html": [
+   "014693c3e88dc8443dc2056915301c3914f12ace",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-http.swap-origin.http.html": [
+   "886ea8c3a7259d307f170f4e774ddd2e50566a00",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.keep-origin.http.html": [
+   "23685b8a0dfefd245f92c0181867e424c5e1a9bf",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.no-redirect.http.html": [
+   "822d196eb514b46c12ef1b31f207136277eeee33",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/cross-https.swap-origin.http.html": [
+   "5cda327fcc4e23623d35e86fe1c0ce0397098038",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.keep-origin.http.html": [
+   "3c63a8b1c103448a79be90df7677026a44ff2d8f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.no-redirect.http.html": [
+   "5836897035e340cf0f5b58f89d2df4762de44f02",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-http.swap-origin.http.html": [
+   "975110b1e779d247e1c7f45155d5ae292b76a704",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.keep-origin.http.html": [
+   "4641de88c739a14e07e8a9db01982ddd9936ccba",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.no-redirect.http.html": [
+   "a2b9102e82f14b4bece84e9e2d383c018264151a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/script-tag/same-https.swap-origin.http.html": [
+   "114a40cb800978130ba15ccb47917af5a85bd33f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.keep-origin.http.html": [
+   "97230961f67f98847d18d6d8c8f76104707e5fa4",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/sharedworker-classic/same-http.no-redirect.http.html": [
+   "ec8ed051039bd0c1c95230fb8efdd7338749cdb2",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.keep-origin.http.html": [
+   "aa336f3914de8b61a82588d3f721f7cb4bddc88a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-classic/same-http.no-redirect.http.html": [
+   "ff4f0b776662f61538659a7900990436393c0cb4",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.keep-origin.http.html": [
+   "0b2b0ad8d52a822620c2e039bbe43e427164462f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/worker-module/same-http.no-redirect.http.html": [
+   "af09ae128f980054e858fef017ae96a86fbdfbea",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.keep-origin.http.html": [
+   "99d4f8be7549a9fd952e71f740d9bbe8d4958310",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.no-redirect.http.html": [
+   "788cf67780137c02ef8f811c6f36c2544da5eae9",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-http.swap-origin.http.html": [
+   "ac3aadbdc8ec09013ec5b1ae0d84ae8fa49964fa",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.keep-origin.http.html": [
+   "8329e74095034c264e960e214a1e2ff784d4b734",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.no-redirect.http.html": [
+   "e9647772192e0f89f224cc71fa658cc593b487b5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/cross-https.swap-origin.http.html": [
+   "b95f2fc84d7c99b55ad6b89825f17dcdcbbc8f2a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.keep-origin.http.html": [
+   "95b0ca6fbffe6df366a9df1ac6fd003c8d1a7ad4",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.no-redirect.http.html": [
+   "bf1f4f4f8e410365ffa8d593df3a19e444901cab",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-http.swap-origin.http.html": [
+   "cbfa298cf597f22415630e1783827884b1cee322",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.keep-origin.http.html": [
+   "3be3c7c04b75aa83a3b322832a316bd20c61cc8e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.no-redirect.http.html": [
+   "e5ae1b3a62c8dd4ed7ff7ba5fdbac5fa081f53e6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/no-referrer-when-downgrade/xhr/same-https.swap-origin.http.html": [
+   "f3bb4286afc8b0f86aa0fb6fdface2619abbe1ec",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+   "a00780694c1f82cfc4b243536204de78c3f7db06",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+   "604a1e529f5d61717e5ef2a2a14b7ec718b18df5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+   "37b4b4c81d9c670a70737572b4f599787a69863c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "76c03a3a23b9ba5d7fbd591088479245bbf7412e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "f804ae15f6c37f1da7ef993cadbe4771ec48f2c3",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+   "218e7974a4add6f96b2777f0028455d6e00b1723",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+   "509b5c212587fcf0da8b7db76de07a469e01cbee",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+   "06518b37c084865c9b8ca4603c11481ff235d432",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+   "6d3bbad2f985c658ce61c0a498741f2411ebf566",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "f3d89afa8e0a773dbec92c2c0330aa892de8fd31",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "8a0f895dd5546e9e028ce7b5d26b585dc1d0407c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+   "8ef99fdc7279322d46208d73140f4f2bc3251eea",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+   "c809622a3f8d87b2f60251093407c2d8c7c08dcc",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+   "b8d88a5fdced14774db37d2454cd2a0d766d66c7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+   "5cd3774b8ecb6b260864049647a3dcd93a416aea",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+   "ef1c290075b96fcbdb02ed9721ebb7d40d197a6a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+   "426d5bf8556ca53eb1fb74dd8495347d43901b80",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/a-tag/same-http.no-redirect.http.html": [
+   "a5678f0d8af832008460786df2023481cbe9065a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/fetch/same-http.keep-origin.http.html": [
+   "7fbef77906bff0dd0c08bfc2168f175a93d208a9",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/fetch/same-http.no-redirect.http.html": [
+   "a04e160ed66ef58a1b8422605621ef0aa15d0bf7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "1a5830e33985a382914de04f3aaff3157dd05a45",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "b7cbd0f451c8ba6ebaf0615596ca763950f72993",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/img-tag/same-http.keep-origin.http.html": [
+   "1a0775901013d3395553e3b06df299ccc79005d2",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/img-tag/same-http.no-redirect.http.html": [
+   "2a6023dd4839dc4ef964b8cf7a1fe286574d2c90",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/script-tag/same-http.keep-origin.http.html": [
+   "db4f2c3c07c89037b66068fe9623d8fdbe45b9ee",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/script-tag/same-http.no-redirect.http.html": [
+   "7667e641a185bb19eb5b12337fafa2782babafe2",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "0a0b8dd289743c5b86fdeedb7a6f9aa7f55c724b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "ad1ea96f46cabf4e17b240f1bfd10dd7b6c80ed7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/worker-classic/same-http.keep-origin.http.html": [
+   "f9959d9c864ba4ddfdf49a957f6932125a08b8dd",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/worker-classic/same-http.no-redirect.http.html": [
+   "a459c7251cf714cd3761bda0a0318420097efd50",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/worker-module/same-http.keep-origin.http.html": [
+   "20483abbee11dbcbb23abb7cb8514ff8905c63df",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/worker-module/same-http.no-redirect.http.html": [
+   "b291030abcc347dd7373641fb011aa61b8f6afcb",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/xhr/same-http.keep-origin.http.html": [
+   "c99c5c6512ad544960f3fc31bd147dc56a365528",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/same-origin/xhr/same-http.no-redirect.http.html": [
+   "ce4ad27fe84ccdbbf52559159e4f9298c1b1c236",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/a-tag/same-http.no-redirect.http.html": [
+   "b18f0df99b130c6fc3fbe3569601602eb557f889",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.keep-origin.http.html": [
+   "84a9a807c0f2910f5dd217d76d074bbbf8220a3c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/fetch/same-http.no-redirect.http.html": [
+   "04971fe57f08c1a90bcf9434720b93065d7b2396",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.keep-origin.http.html": [
+   "81e99b3ac0ff71d2254bf413852fe3098274c70f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/iframe-tag/same-http.no-redirect.http.html": [
+   "be9fdbff51751a5ab756f83fc29285a067dfa8e5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.keep-origin.http.html": [
+   "fe67437e4dc7a237eab3697a770c366bb2825de1",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/img-tag/same-http.no-redirect.http.html": [
+   "5a1ec96f33a315bced2de00709faac657b6df29a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.keep-origin.http.html": [
+   "b31138974ed090cf6815d1857359b950751ebca3",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/script-tag/same-http.no-redirect.http.html": [
+   "d3fb9bbb74ae6db3370b1254c3df31763f639a4b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.keep-origin.http.html": [
+   "4631af5260be93d5acbba8e736a0a322ace887c6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/sharedworker-classic/same-http.no-redirect.http.html": [
+   "dd6362c04db67e8d3e8ec5c3429b59617ef7f913",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.keep-origin.http.html": [
+   "c823c6e7ba136a541019af79084aec776405e5eb",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-classic/same-http.no-redirect.http.html": [
+   "6801b70f93ab131998f7082b40b5841f234342fd",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.keep-origin.http.html": [
+   "a55b41a020dbbf050d808ae71e1b63d7db6d0fb5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/worker-module/same-http.no-redirect.http.html": [
+   "35727cd0e22038d90c59e5faf1d19fcd2d82eb02",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.keep-origin.http.html": [
+   "0e3338647fe1f5964dcbdeba1362487582dc5514",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/strict-origin-when-cross-origin/xhr/same-http.no-redirect.http.html": [
+   "d08978606020167262d2d3b989da1ab0923e3453",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/cross-http.no-redirect.http.html": [
+   "672bf6de2212c49c986cfc874d173722ff9ae0e5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/cross-https.no-redirect.http.html": [
+   "2c5d115414ac6e98af462a584b2542a454b776a3",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/same-http.no-redirect.http.html": [
+   "77679ab4e62e9a7081ebe00e9522dc3012c8c71a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/a-tag/same-https.no-redirect.http.html": [
+   "2ed530425d5e5ef0421635700f7ff2efde704fc1",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.keep-origin.http.html": [
+   "f1724215d00384dde2d30bb238c6d393772ed80e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.no-redirect.http.html": [
+   "b86e83109a8a97310e254dd95388d871e5d1dc2a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-http.swap-origin.http.html": [
+   "2849ca8cf72c8d30538858c8a8859b407dd80207",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.keep-origin.http.html": [
+   "572e04d674d5ac7a315cb25d5cd8c1587b46b07c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.no-redirect.http.html": [
+   "b589362fb2b50467f19e3317f45d76be3579373b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/cross-https.swap-origin.http.html": [
+   "695e0d32b990292ba452fdc33e498b8628f3735a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.keep-origin.http.html": [
+   "41ba30a0c554d672fe3b8e7333bf99abe3b9f1ac",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.no-redirect.http.html": [
+   "1f4442d0fd6bce3169abafabda24244b8cadddb8",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-http.swap-origin.http.html": [
+   "53e502ff5665cf789e1c7500e6620a4d68c20901",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.keep-origin.http.html": [
+   "786e43ee7266865bb3d6db68286be97a989d0c43",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.no-redirect.http.html": [
+   "cf30ceb59430e318bc4b6ec6d662c82f059d5e8e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/fetch/same-https.swap-origin.http.html": [
+   "ba7e39d8902f8d110c847c3460399ceb120b16cc",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.keep-origin.http.html": [
+   "b25f36c61b5528050e0c37fb91a2a7c6b61bc9b5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.no-redirect.http.html": [
+   "49352a7f5876c7ba35a2653bd1cf1cc979035ce6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-http.swap-origin.http.html": [
+   "1c84b97f73c432df0ac366ca872eaa6b4c60fd8f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.keep-origin.http.html": [
+   "1fd86c6ea2637cee2fd61c6d1d499cb9004639fe",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.no-redirect.http.html": [
+   "625b3cba2929ff481e9085ec981b68d4f5b32016",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/cross-https.swap-origin.http.html": [
+   "2ab41c9ebec4dbd32fe9e8df712dc90a35a6a57d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.keep-origin.http.html": [
+   "b463dfd023ce7d4aafc5fb8fc99660eb6668665c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.no-redirect.http.html": [
+   "00a10e1945001e5d6036f22043493dd59bd71aac",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-http.swap-origin.http.html": [
+   "c1a52fe0c5b6c5fb47377618acb585f487e57b26",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.keep-origin.http.html": [
+   "c4ff38003150745537dfe22c6cf1b865d448433c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.no-redirect.http.html": [
+   "863369c876ca82cc874375c45e9c29c003667070",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/iframe-tag/same-https.swap-origin.http.html": [
+   "9240998a3c41ff0e840f911e64395d5f619f74bc",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.keep-origin.http.html": [
+   "0f4640654fa2ae9ce466687d619482ceb9107456",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.no-redirect.http.html": [
+   "934d17cc32963a73f823951c8d77d16d60324d09",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-http.swap-origin.http.html": [
+   "270e81a52511be0eb274d52370d4d905c735f874",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.keep-origin.http.html": [
+   "abddc971c7e6f06d0be0353bbb008d3e92138c11",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.no-redirect.http.html": [
+   "38bde67c48c8e5b39921620e2c80e74ad0046c59",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/cross-https.swap-origin.http.html": [
+   "0c4a9a38db99e125d9efcadee89de7bb477259c9",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.keep-origin.http.html": [
+   "3c6efb46f162136fb48a1b507cf8f4b0353a5515",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.no-redirect.http.html": [
+   "77a4e88b7788bbeb8ba92c1e7cbc8fc92dcdd356",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-http.swap-origin.http.html": [
+   "119445172a461ab69a94a5d19740f25f918eff5d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.keep-origin.http.html": [
+   "18ce22b7ea93090516c296212cf42cf947bca4fd",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.no-redirect.http.html": [
+   "95ad996eebc42e0fbe9bd42ead8a31f9e25922b6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/img-tag/same-https.swap-origin.http.html": [
+   "1d558cf56738cd698e0b020df96133416e3c5183",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.keep-origin.http.html": [
+   "0f269d6fac19ada45c3a437100f05e82da047c7d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.no-redirect.http.html": [
+   "1966a479387aab09103307a4cf2dfb5834a72c73",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-http.swap-origin.http.html": [
+   "caa83b1b3159c4d499bafb05edfff9fa235428b3",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.keep-origin.http.html": [
+   "281119783e1e3ac6affb6f54f9d8d70476199382",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.no-redirect.http.html": [
+   "86785b7f5c05413af78e6dc08c7afb95b02da6dc",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/cross-https.swap-origin.http.html": [
+   "402f680880e876adc641b9981bf075fe4e015938",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.keep-origin.http.html": [
+   "db7a1530be5d566e5dfb42306c2896d696a1556f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.no-redirect.http.html": [
+   "70fc272e7149149aa9cb6882890170368db4d091",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-http.swap-origin.http.html": [
+   "b6f2c8add9a4c7f93edbc86a6d45cc6de4f58bea",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.keep-origin.http.html": [
+   "925cb67ac511c34801eafd23ed96c37e8b4b5b48",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.no-redirect.http.html": [
+   "5ac8f25ecbd589afc1ff4e31927ac8e30e7816c8",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/script-tag/same-https.swap-origin.http.html": [
+   "2063221722110ae7fe92e577918eb92f1c9f99f1",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic/same-http.keep-origin.http.html": [
+   "f1f4f3bba439481659ca87db7032def14f2f3daf",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/sharedworker-classic/same-http.no-redirect.http.html": [
+   "030de324d9f78b0a0e706310760b52f83efe8a5c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/worker-classic/same-http.keep-origin.http.html": [
+   "2914c71d272c0be798057eaba7ff643071aa61ab",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/worker-classic/same-http.no-redirect.http.html": [
+   "586b673102d8d98f765aebe6d4e4767faeccfd8d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/worker-module/same-http.keep-origin.http.html": [
+   "54bbe38a12443b5bf090d7a95d6c4a1f6c715218",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/worker-module/same-http.no-redirect.http.html": [
+   "9f71e045a19bcb74d450dcc903ab57c1eb518c4c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.keep-origin.http.html": [
+   "356475b6a1022389ba91e2a1f53b10841d395cca",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.no-redirect.http.html": [
+   "01ef4b080fcfdd510cb5647adbfbe0bea371867b",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-http.swap-origin.http.html": [
+   "e8795602b9368da8f85ed81d60618b51ab095a89",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.keep-origin.http.html": [
+   "ba2162745257666451fd763e24462d4746cace2c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.no-redirect.http.html": [
+   "59c4d5238a481874ff3c1dddde5ec8146096cff6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/cross-https.swap-origin.http.html": [
+   "d067cc8ea2c9b6df8a47fd583903d12b15b0bfd8",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.keep-origin.http.html": [
+   "889acaca97b1c4e5b8ed9ba5538ca0cfc3d0acab",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.no-redirect.http.html": [
+   "25d1857ead5ce58d9c89d82ea110fef30751dfca",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-http.swap-origin.http.html": [
+   "51b71a977ce4d682a000e117a785f421299d5000",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.keep-origin.http.html": [
+   "f0a18a10a2e0e05e3065e5b4c953ba8a33a59191",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.no-redirect.http.html": [
+   "c11a9c40c34d9eaceb99fad57c3627843d8a32c5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unsafe-url/xhr/same-https.swap-origin.http.html": [
+   "9cc85b97d69aa26617b27848a4abfa5fe12ae805",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/a-tag/cross-http.no-redirect.http.html": [
+   "e1b9c071a8f0d47be4190d7aeaadadc7f84068f7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/a-tag/cross-https.no-redirect.http.html": [
+   "9df9f18a5402cca2377e23a10b36cfb93233a238",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/a-tag/same-http.no-redirect.http.html": [
+   "b2111079c201ff3d7511d8aa3f51096893b72432",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/a-tag/same-https.no-redirect.http.html": [
+   "c7aa9dc13c30e6354300a8aae2a02e634eefc0e0",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.keep-origin.http.html": [
+   "929c4c594d67838a0d477946194f6eb2802a4a55",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.no-redirect.http.html": [
+   "b2fea46787d457d1f0f24a4b430b241fc2d09b36",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/fetch/cross-http.swap-origin.http.html": [
+   "e08868bbb70f823b2cdcc9673632cd916f2df34f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.keep-origin.http.html": [
+   "827a4543138f99155643abc15537c0802133d559",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.no-redirect.http.html": [
+   "ced41a3b59b3a191f57cb6b508562fdc01ba6613",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/fetch/cross-https.swap-origin.http.html": [
+   "ab873760f224a8d3ca0f77abab26e462da62f711",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/fetch/same-http.keep-origin.http.html": [
+   "47153305f55c119775ca8a8d6db2146cf7e97373",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/fetch/same-http.no-redirect.http.html": [
+   "76d4705ae5daf194c62a8363888b8e0a34ce5eb5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/fetch/same-http.swap-origin.http.html": [
+   "c026b45fd061e295b4435f1285c4b6d383e0af00",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/fetch/same-https.keep-origin.http.html": [
+   "6870f2cfd072d9eceb74c333dd3bdf2bc01598c3",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/fetch/same-https.no-redirect.http.html": [
+   "1a3acf28dffbe052d51ce8d43f8bd62cfd19a575",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/fetch/same-https.swap-origin.http.html": [
+   "87981d1c661d9790e5f4226527b218dbfaf788e2",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.keep-origin.http.html": [
+   "186d94ba8afc97c85e6c0528d7d7a1257f19e0b4",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.no-redirect.http.html": [
+   "bfe3c149eaeb98bf8fc32bb2d8e4034c8f8f3f74",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-http.swap-origin.http.html": [
+   "265b108c984ca2a7291664db6a746653d98a9ec5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.keep-origin.http.html": [
+   "51fb8801cf2caeaa653ea9dd9e95be094955f677",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.no-redirect.http.html": [
+   "078b803684089ff2d9529a0bdf25514824a883c7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/iframe-tag/cross-https.swap-origin.http.html": [
+   "078aef4c736fc4a85a370c387331aa18dd369e3d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.keep-origin.http.html": [
+   "65b6e912cf336bbd55a8e51b4459c1f2c278219e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.no-redirect.http.html": [
+   "7ab79f00ab26e87c076ad5a311cc5ca77bd1a093",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-http.swap-origin.http.html": [
+   "951b9a76ddfdf607db9afec9a98537ae0dc89c17",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.keep-origin.http.html": [
+   "c2e72a3c54572be7056e9185f256866c97879aee",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.no-redirect.http.html": [
+   "da910c915a7014fa06d0a8c54ce172a04fe2a569",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/iframe-tag/same-https.swap-origin.http.html": [
+   "be9b5c3979bd3336c3e3d1b2871506955aa3258a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.keep-origin.http.html": [
+   "69bae396965709166af06f1467320afbed05b7d0",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.no-redirect.http.html": [
+   "2c800d68d3ca032c0afd1f1aa813267535e65bf5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-http.swap-origin.http.html": [
+   "ff6aee7cf06c6f4dc9e7a5caecaa1d70e55fc90d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.keep-origin.http.html": [
+   "ce1ddee18daee5b2669918df19068f7e1746fecd",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.no-redirect.http.html": [
+   "63b43d13997a2628c7f3879e2e87fd814ad5a304",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/img-tag/cross-https.swap-origin.http.html": [
+   "ed497a1c8027e5994bbd8ecf36a47e8b4fe83415",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.keep-origin.http.html": [
+   "f8d97a0c86a823a24c47545e8454cc75f13ec952",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.no-redirect.http.html": [
+   "611164c1f48fcfa38556225d22c0afeed75e4f74",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/img-tag/same-http.swap-origin.http.html": [
+   "c680915e28a19551cc6b5ce55e87b6232149578d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.keep-origin.http.html": [
+   "915a88cca84346a4c6c6fa3a4ff509478e7b0901",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.no-redirect.http.html": [
+   "28122a250d896c2406039d772e7ae07bae3e7f83",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/img-tag/same-https.swap-origin.http.html": [
+   "27553107eebeba6357530b602afe0c3b81b0a9e6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.keep-origin.http.html": [
+   "136ddb9cc68a83a3ec316052d03d6c9176631fea",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.no-redirect.http.html": [
+   "d011a885919b8b1a99d94141ff8a4412dd8a114e",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-http.swap-origin.http.html": [
+   "d87d5850f0dd2c54dbb16e347b9d7fd3b43434d4",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.keep-origin.http.html": [
+   "2c6bf466298bbdfc59f9d7fa02185c0eb72030c8",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.no-redirect.http.html": [
+   "bf0589564b4e986935b1c1521838fde537717789",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/script-tag/cross-https.swap-origin.http.html": [
+   "3f616dec68a57f9a28cb68abd0eaa3c3abb33f0c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.keep-origin.http.html": [
+   "0b796055cbbd252d311b4555fa269848bc3e9963",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.no-redirect.http.html": [
+   "e903577c95a968bbc374df077dbc0b95f2bb4a42",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/script-tag/same-http.swap-origin.http.html": [
+   "c812e2aa122cfead7fbd1c926427a242eca563c5",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.keep-origin.http.html": [
+   "88b68ef5e00b5f6d67d90a45e23d2dd82cc27a94",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.no-redirect.http.html": [
+   "47a8bb1895359bd4ff39d063c05e57c804fcd45c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/script-tag/same-https.swap-origin.http.html": [
+   "a5e98f5f38e835452a67c5de9b5f9da3f7d7d77d",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/sharedworker-classic/same-http.keep-origin.http.html": [
+   "3b6c78dcea428d1d00c95fd06051f62998860df6",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/sharedworker-classic/same-http.no-redirect.http.html": [
+   "ca6f2485a9937a0ee9364ccc2a3d8841e10dd40c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/worker-classic/same-http.keep-origin.http.html": [
+   "520bea1e1fbbe510d745901c9fec217b65c21e48",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/worker-classic/same-http.no-redirect.http.html": [
+   "298248e21d6ba53cc5bf5cf591adcb9b33a29f5c",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/worker-module/same-http.keep-origin.http.html": [
+   "3b6630ca6e7cea51492e9f68cf0c8b067a6a50c8",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/worker-module/same-http.no-redirect.http.html": [
+   "d6f2ec45a7ce85ff2f03748bd3db47c2f7a772d1",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.keep-origin.http.html": [
+   "d78ce1f66f4453118a3065a8f70287e281e58759",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.no-redirect.http.html": [
+   "314e15d4304249d5ac9b90bfd22a5fead4e03c03",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/xhr/cross-http.swap-origin.http.html": [
+   "b098e917c936a58e3457f405a7f87a6ef0435439",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.keep-origin.http.html": [
+   "43f924c77f867f085095dc0e63ee01d7e8a83010",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.no-redirect.http.html": [
+   "10dc03fb0142ccf6cf89d98e764df16eb56fa9e9",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/xhr/cross-https.swap-origin.http.html": [
+   "541415c9546ce3e7b8482355bd9ebaeb94c3f4eb",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/xhr/same-http.keep-origin.http.html": [
+   "f9d4101186fdbfc0fbb055a7bcbee559e5fa29c7",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/xhr/same-http.no-redirect.http.html": [
+   "fa92ffe6bd075112936d08be00cf0c210453ff18",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/xhr/same-http.swap-origin.http.html": [
+   "b1d2d924035a1eadecfee1c02ab883e834d47b9a",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/xhr/same-https.keep-origin.http.html": [
+   "5fb91ef90d4dd93b2035a27ad8f0c311bc3a2e88",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/xhr/same-https.no-redirect.http.html": [
+   "135bf134a40c8687ec1b13cc7d99f85f20ce856f",
+   "testharness"
+  ],
+  "referrer-policy/4K/gen/top.meta/unset/xhr/same-https.swap-origin.http.html": [
+   "db8586474b04aedbb244171c00d4ebd8ea90e4fc",
+   "testharness"
+  ],
   "referrer-policy/4K/generic/spec_json.js": [
    "39cd997338e4c9e235d30097d970daeff5f1f19b",
    "support"
@@ -523321,7 +543076,7 @@
    "support"
   ],
   "tools/wpt/wpt.py": [
-   "93301dd86b4ffe202902a492204eba6537fb50d5",
+   "49ee6345381450c4087423b2f7d1c9538f813c92",
    "support"
   ],
   "tools/wptrunner/LICENSE": [
@@ -539244,12 +558999,8 @@
    "3fe840d304285a8872d5b0c6dbf288ca4ec94642",
    "support"
   ],
-  "workers/constructors/SharedWorker/undefined-arguments-expected.txt": [
-   "83e9421c158936d4a319f1239fd09a3e284000ad",
-   "support"
-  ],
   "workers/constructors/SharedWorker/undefined-arguments.html": [
-   "b9a3b3692c349d6b17191d961d3744080d08ceab",
+   "bc0a75bcfeb95a6a62627f66688ce52441dc956e",
    "testharness"
   ],
   "workers/constructors/SharedWorker/undefined.headers": [
@@ -539885,7 +559636,7 @@
    "support"
   ],
   "workers/modules/dedicated-worker-import-meta.html": [
-   "4ed56e279f7d558ca5d75c6cbe969ba41b2d52dd",
+   "cff8e91488e8239abe213619d12d5a603072fbea",
    "testharness"
   ],
   "workers/modules/dedicated-worker-import-referrer.html": [
@@ -539905,7 +559656,7 @@
    "support"
   ],
   "workers/modules/dedicated-worker-options-type.html": [
-   "b7c96b152950dda87ff0a34192008a6e30ec7471",
+   "74523f4478b4209d4de060e98553946896fdecb7",
    "testharness"
   ],
   "workers/modules/resources/credentials.py": [
@@ -539917,7 +559668,7 @@
    "support"
   ],
   "workers/modules/resources/dynamic-import-given-url-worker.js": [
-   "2ea88b8071875a431cb4b40225facd1adf6d5644",
+   "55102759352c5564e832e37bb8c7f0e7bd007f4d",
    "support"
   ],
   "workers/modules/resources/dynamic-import-remote-origin-credentials-checker-worker.sub.js": [
@@ -539976,8 +559727,12 @@
    "cb762eff806849df46dc758ef7b98b63f27f54c9",
    "support"
   ],
+  "workers/modules/resources/import-meta-url-export.js": [
+   "5287b2e9e8492e23d082a43ceb588a331fa3c924",
+   "support"
+  ],
   "workers/modules/resources/import-meta-url-worker.js": [
-   "9d909778eda0e3a6082b6f93a8fabf36a82b9267",
+   "7887836a6cc1a5c321ebbe2efa0e5724796c281c",
    "support"
   ],
   "workers/modules/resources/import-scripts-worker.js": [
@@ -540048,6 +559803,14 @@
    "0e0b9b306314fd96b48e0007918935bc56df2d53",
    "testharness"
   ],
+  "workers/modules/shared-worker-import-meta-expected.txt": [
+   "229c339fe84726d41b1e1ee9b92d1a8428cef90a",
+   "support"
+  ],
+  "workers/modules/shared-worker-import-meta.html": [
+   "44cd9df9ee7097abfee68b01a8868249bee63f3b",
+   "testharness"
+  ],
   "workers/modules/shared-worker-import.any.js": [
    "15dfdde067a347b024c078578f24a5c63ae53fdd",
    "testharness"
@@ -540925,7 +560688,7 @@
    "support"
   ],
   "wpt": [
-   "a24bc83a9197a1561ddf28c8116c0cb10bcde70e",
+   "316cbeba3859f02c4f1a9de439a3e269cb430453",
    "support"
   ],
   "wpt.py": [
diff --git a/third_party/blink/web_tests/external/wpt/css/css-flexbox/dynamic-change-simplified-layout-002.html b/third_party/blink/web_tests/external/wpt/css/css-flexbox/dynamic-change-simplified-layout-002.html
new file mode 100644
index 0000000..d419bb3
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/css-flexbox/dynamic-change-simplified-layout-002.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht" />
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/" />
+<meta name="assert" content="Tests that certain dynamic changes don't lead to a flex item being sized as zero, instead of its stretched size." />
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div style="display: flex; width: 100px; height: 100px; background: red;">
+  <div style="contain: layout size; height: 100px; flex: 1; background: green;">
+    <div id="target"></div>
+  </div>
+</div>
+<script>
+document.body.offsetTop;
+document.getElementById('target').style.width = '1px';
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/cssom-view/MediaQueryList-addListener-handleEvent-expected.txt b/third_party/blink/web_tests/external/wpt/css/cssom-view/MediaQueryList-addListener-handleEvent-expected.txt
new file mode 100644
index 0000000..ed09e42
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/css/cssom-view/MediaQueryList-addListener-handleEvent-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+PASS calls handleEvent method of event listener
+FAIL looks up handleEvent method on every event dispatch assert_equals: expected 1 but got 0
+FAIL doesn't look up handleEvent method on callable event listeners assert_equals: expected 1 but got 0
+FAIL rethrows errors when getting handleEvent assert_true: Timed out waiting for error expected true got false
+FAIL throws if handleEvent is falsy and not callable assert_true: Timed out waiting for error expected true got false
+FAIL throws if handleEvent is thruthy and not callable assert_true: Timed out waiting for error expected true got false
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/css/cssom-view/MediaQueryList-addListener-handleEvent.html b/third_party/blink/web_tests/external/wpt/css/cssom-view/MediaQueryList-addListener-handleEvent.html
index 5bdd9df..47267d9 100644
--- a/third_party/blink/web_tests/external/wpt/css/cssom-view/MediaQueryList-addListener-handleEvent.html
+++ b/third_party/blink/web_tests/external/wpt/css/cssom-view/MediaQueryList-addListener-handleEvent.html
@@ -71,36 +71,38 @@
     assert_equals(calls, 1);
 }, "doesn't look up handleEvent method on callable event listeners");
 
-const uncaught_error_test = async (t, listener) => {
+const uncaught_error_test = async (t, getHandleEvent) => {
     const mql = await createMQL(t);
-    mql.addListener(listener);
 
-    const eventWatcher = new EventWatcher(t, window, "error");
+    let calls = 0;
+    mql.addListener({
+        get handleEvent() {
+            calls++;
+            return getHandleEvent();
+        },
+    });
+
+    const eventWatcher = new EventWatcher(t, window, "error", waitForChangesReported);
     const errorPromise = eventWatcher.wait_for("error");
     triggerMQLEvent(mql);
 
     const event = await errorPromise;
+    assert_equals(calls, 1, "handleEvent property was not looked up");
     throw event.error;
 };
 
 promise_test(t => {
     const error = { name: "test" };
-    const listener = {
-        get handleEvent() {
-            throw error;
-        },
-    };
 
-    return promise_rejects_exactly(t, error, uncaught_error_test(t, listener));
+    return promise_rejects_exactly(t, error,
+        uncaught_error_test(t, () => { throw error; }));
 }, "rethrows errors when getting handleEvent");
 
 promise_test(t => {
-    const listener = { handleEvent: null };
-    return promise_rejects(t, new TypeError(), uncaught_error_test(t, listener));
+    return promise_rejects(t, new TypeError(), uncaught_error_test(t, () => false));
 }, "throws if handleEvent is falsy and not callable");
 
 promise_test(t => {
-    const listener = { handleEvent: "str" };
-    return promise_rejects(t, new TypeError(), uncaught_error_test(t, listener));
+    return promise_rejects(t, new TypeError(), uncaught_error_test(t, () => "str"));
 }, "throws if handleEvent is thruthy and not callable");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent-expected.txt b/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent-expected.txt
index ee188fd9..bb076e7 100644
--- a/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent-expected.txt
@@ -1,9 +1,9 @@
 This is a testharness.js-based test.
 PASS calls `handleEvent` method of `EventListener`
-PASS rethrows errors when getting `handleEvent`
 PASS performs `Get` every time event is dispatched
 PASS doesn't call `handleEvent` method on callable `EventListener`
-FAIL throws if `handleEvent` is falsy and not callable assert_true: expected true got false
-FAIL throws if `handleEvent` is thruthy and not callable assert_true: expected true got false
+PASS rethrows errors when getting `handleEvent`
+FAIL throws if `handleEvent` is falsy and not callable assert_true: Timed out waiting for error expected true got false
+FAIL throws if `handleEvent` is thruthy and not callable assert_true: Timed out waiting for error expected true got false
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent.html b/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent.html
index 1eb80cc..27730b2 100644
--- a/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent.html
+++ b/third_party/blink/web_tests/external/wpt/dom/events/EventListener-handleEvent.html
@@ -30,30 +30,6 @@
 test(function(t) {
     var type = "foo";
     var target = document.createElement("div");
-    var thrownError = { name: "test" };
-    var uncaughtError;
-    var errorHandler = function(event) {
-        uncaughtError = event.error;
-    };
-
-    window.addEventListener("error", errorHandler);
-    t.add_cleanup(function() {
-        window.removeEventListener("error", errorHandler);
-    });
-
-    target.addEventListener(type, {
-        get handleEvent() {
-            throw thrownError;
-        },
-    });
-
-    target.dispatchEvent(new Event(type));
-    assert_equals(thrownError, uncaughtError);
-}, "rethrows errors when getting `handleEvent`");
-
-test(function(t) {
-    var type = "foo";
-    var target = document.createElement("div");
     var calls = 0;
 
     target.addEventListener(type, {
@@ -81,45 +57,46 @@
     assert_equals(calls, 1);
 }, "doesn't call `handleEvent` method on callable `EventListener`");
 
-test(function(t) {
-    var type = "foo";
-    var target = document.createElement("div");
-    var uncaughtError;
-    var errorHandler = function(event) {
-        uncaughtError = event.error;
+const uncaught_error_test = async (t, getHandleEvent) => {
+    const type = "foo";
+    const target = document.createElement("div");
+
+    let calls = 0;
+    target.addEventListener(type, {
+        get handleEvent() {
+            calls++;
+            return getHandleEvent();
+        },
+    });
+
+    const timeout = () => {
+        return new Promise(resolve => {
+            t.step_timeout(resolve, 0);
+        });
     };
 
-    window.addEventListener("error", errorHandler);
-    t.add_cleanup(function() {
-        window.removeEventListener("error", errorHandler);
-    });
-
-    target.addEventListener(type, {
-        handleEvent: null,
-    });
+    const eventWatcher = new EventWatcher(t, window, "error", timeout);
+    const errorPromise = eventWatcher.wait_for("error");
 
     target.dispatchEvent(new Event(type));
-    assert_true(uncaughtError instanceof TypeError);
+
+    const event = await errorPromise;
+    assert_equals(calls, 1, "handleEvent property was not looked up");
+    throw event.error;
+};
+
+promise_test(t => {
+    const error = { name: "test" };
+
+    return promise_rejects_exactly(t, error,
+        uncaught_error_test(t, () => { throw error; }));
+}, "rethrows errors when getting `handleEvent`");
+
+promise_test(t => {
+    return promise_rejects(t, new TypeError(), uncaught_error_test(t, () => null));
 }, "throws if `handleEvent` is falsy and not callable");
 
-test(function(t) {
-    var type = "foo";
-    var target = document.createElement("div");
-    var uncaughtError;
-    var errorHandler = function(event) {
-        uncaughtError = event.error;
-    };
-
-    window.addEventListener("error", errorHandler);
-    t.add_cleanup(function() {
-        window.removeEventListener("error", errorHandler);
-    });
-
-    target.addEventListener(type, {
-        handleEvent: 1,
-    });
-
-    target.dispatchEvent(new Event(type));
-    assert_true(uncaughtError instanceof TypeError);
+promise_test(t => {
+    return promise_rejects(t, new TypeError(), uncaught_error_test(t, () => 42));
 }, "throws if `handleEvent` is thruthy and not callable");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/IndexedDB.idl b/third_party/blink/web_tests/external/wpt/interfaces/IndexedDB.idl
index 33925d6..a66a245 100644
--- a/third_party/blink/web_tests/external/wpt/interfaces/IndexedDB.idl
+++ b/third_party/blink/web_tests/external/wpt/interfaces/IndexedDB.idl
@@ -67,7 +67,8 @@
   readonly attribute DOMStringList objectStoreNames;
 
   [NewObject] IDBTransaction transaction((DOMString or sequence<DOMString>) storeNames,
-                                         optional IDBTransactionMode mode = "readonly");
+                                         optional IDBTransactionMode mode = "readonly",
+                                         optional IDBTransactionOptions options = {});
   void close();
 
   [NewObject] IDBObjectStore createObjectStore(
@@ -82,6 +83,12 @@
   attribute EventHandler onversionchange;
 };
 
+enum IDBTransactionDurability { "default", "strict", "relaxed" };
+
+dictionary IDBTransactionOptions {
+  IDBTransactionDurability durability = "default";
+};
+
 dictionary IDBObjectStoreParameters {
   (DOMString or sequence<DOMString>)? keyPath = null;
   boolean autoIncrement = false;
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/css-regions.idl b/third_party/blink/web_tests/external/wpt/interfaces/css-regions.idl
deleted file mode 100644
index f7cf3d3..0000000
--- a/third_party/blink/web_tests/external/wpt/interfaces/css-regions.idl
+++ /dev/null
@@ -1,33 +0,0 @@
-// GENERATED CONTENT - DO NOT EDIT
-// Content was automatically extracted by Reffy into reffy-reports
-// (https://github.com/tidoust/reffy-reports)
-// Source: CSS Regions Module Level 1 (https://drafts.csswg.org/css-regions/)
-
-partial interface Document {
-  readonly attribute NamedFlowMap namedFlows;
-};
-
-[Exposed=Window,
- MapClass=(CSSOMString, NamedFlow)] interface NamedFlowMap {
-  NamedFlow? get(CSSOMString flowName);
-  boolean has(CSSOMString flowName);
-  NamedFlowMap set(CSSOMString flowName, NamedFlow flowValue);
-  boolean delete(CSSOMString flowName);
-};
-
-[Exposed=Window]
-interface NamedFlow : EventTarget {
-  readonly attribute CSSOMString name;
-  readonly attribute boolean overset;
-  sequence<Region> getRegions();
-  readonly attribute short firstEmptyRegionIndex;
-  sequence<Node> getContent();
-  sequence<Region> getRegionsByContent(Node node);
-};
-
-interface mixin Region {
-  readonly attribute CSSOMString regionOverset;
-  sequence<Range>? getRegionFlowRanges();
-};
-
-Element includes Region;
diff --git a/third_party/blink/web_tests/external/wpt/interfaces/native-file-system.idl b/third_party/blink/web_tests/external/wpt/interfaces/native-file-system.idl
new file mode 100644
index 0000000..f4679175
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/interfaces/native-file-system.idl
@@ -0,0 +1,92 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content was automatically extracted by Reffy into reffy-reports
+// (https://github.com/tidoust/reffy-reports)
+// Source: Native File System (https://wicg.github.io/native-file-system/)
+
+dictionary FileSystemHandlePermissionDescriptor {
+  boolean writable = false;
+};
+
+[Exposed=(Window,Worker), SecureContext, Serializable]
+interface FileSystemHandle {
+  readonly attribute boolean isFile;
+  readonly attribute boolean isDirectory;
+  readonly attribute USVString name;
+
+  Promise<PermissionState> queryPermission(optional FileSystemHandlePermissionDescriptor descriptor = {});
+  Promise<PermissionState> requestPermission(optional FileSystemHandlePermissionDescriptor descriptor = {});
+};
+
+dictionary FileSystemCreateWriterOptions {
+  boolean keepExistingData = false;
+};
+
+[Exposed=(Window,Worker), SecureContext, Serializable]
+interface FileSystemFileHandle : FileSystemHandle {
+  Promise<File> getFile();
+  Promise<FileSystemWriter> createWriter(optional FileSystemCreateWriterOptions options = {});
+};
+
+dictionary FileSystemGetFileOptions {
+  boolean create = false;
+};
+
+dictionary FileSystemGetDirectoryOptions {
+  boolean create = false;
+};
+
+dictionary FileSystemRemoveOptions {
+  boolean recursive = false;
+};
+
+[Exposed=(Window,Worker), SecureContext, Serializable]
+interface FileSystemDirectoryHandle : FileSystemHandle {
+  Promise<FileSystemFileHandle> getFile(USVString name, optional FileSystemGetFileOptions options = {});
+  Promise<FileSystemDirectoryHandle> getDirectory(USVString name, optional FileSystemGetDirectoryOptions options = {});
+
+  // This really returns an async iterable, but that is not yet expressable in WebIDL.
+  object getEntries();
+
+  Promise<void> removeEntry(USVString name, optional FileSystemRemoveOptions options = {});
+};
+
+[Exposed=(Window,Worker), SecureContext]
+interface FileSystemWriter {
+  Promise<void> write(unsigned long long position, (BufferSource or Blob or USVString) data);
+  Promise<void> truncate(unsigned long long size);
+  Promise<void> close();
+};
+
+enum ChooseFileSystemEntriesType { "open-file", "save-file", "open-directory" };
+
+dictionary ChooseFileSystemEntriesOptionsAccepts {
+  USVString description;
+  sequence<USVString> mimeTypes;
+  sequence<USVString> extensions;
+};
+
+dictionary ChooseFileSystemEntriesOptions {
+    ChooseFileSystemEntriesType type = "open-file";
+    boolean multiple = false;
+    sequence<ChooseFileSystemEntriesOptionsAccepts> accepts;
+    boolean excludeAcceptAllOption = false;
+};
+
+[SecureContext]
+partial interface Window {
+    Promise<(FileSystemHandle or sequence<FileSystemHandle>)>
+        chooseFileSystemEntries(optional ChooseFileSystemEntriesOptions options = {});
+};
+
+enum SystemDirectoryType {
+  "sandbox"
+};
+
+dictionary GetSystemDirectoryOptions {
+  required SystemDirectoryType type;
+};
+
+[SecureContext]
+partial interface FileSystemDirectoryHandle {
+  static Promise<FileSystemDirectoryHandle> getSystemDirectory(GetSystemDirectoryOptions options);
+};
diff --git a/third_party/blink/web_tests/external/wpt/lint.whitelist b/third_party/blink/web_tests/external/wpt/lint.whitelist
index 1b102e4..e428d2f4 100644
--- a/third_party/blink/web_tests/external/wpt/lint.whitelist
+++ b/third_party/blink/web_tests/external/wpt/lint.whitelist
@@ -384,7 +384,6 @@
 INDENT TABS: css/css-masking/*
 INDENT TABS: css/css-multicol/*
 INDENT TABS: css/css-page/*
-INDENT TABS: css/css-regions/*
 INDENT TABS: css/css-round-display/*
 INDENT TABS: css/css-text/*
 INDENT TABS: css/css-text-decor/*
@@ -400,9 +399,6 @@
 
 
 ## Things we're stopping from getting worse
-CONSOLE: css/css-regions/elements/support/Three.js
-CONSOLE: css/css-regions/interactivity/selection/support/js/selection-test-helper.js
-CONSOLE: css/css-regions/stacking-context/javascript-stacking-context-002.html
 CONSOLE: css/css-shapes/shape-outside/supported-shapes/support/test-utils.js
 CONSOLE: css/css-values/viewport-units-css2-001.html
 CONSOLE: css/css-writing-modes/orthogonal-parent-shrink-to-fit-001*.html
@@ -475,9 +471,6 @@
 # These are all the current "merge mismatch" errors the build system produces
 CSS-COLLIDING-SUPPORT-NAME: css/css-flexbox/support/200x200-green.png
 CSS-COLLIDING-SUPPORT-NAME: css/css-grid/grid-items/support/200x200-green.png
-CSS-COLLIDING-SUPPORT-NAME: css/css-scroll-snap/support/common.css
-CSS-COLLIDING-SUPPORT-NAME: css/css-regions/contentEditable/support/common.css
-CSS-COLLIDING-SUPPORT-NAME: css/css-regions/interactivity/full-screen/support/common.css
 CSS-COLLIDING-SUPPORT-NAME: css/css-backgrounds/support/pattern-grg-rgr-grg.png
 CSS-COLLIDING-SUPPORT-NAME: css/css-multicol/support/pattern-grg-rgr-grg.png
 CSS-COLLIDING-SUPPORT-NAME: css/css-transitions/support/pattern-grg-rgr-grg.png
@@ -492,8 +485,6 @@
 CSS-COLLIDING-SUPPORT-NAME: css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/support/solidblue.png
 CSS-COLLIDING-SUPPORT-NAME: css/css-writing-modes/support/swatch-fuchsia.png
 CSS-COLLIDING-SUPPORT-NAME: css/CSS2/support/swatch-fuchsia.png
-CSS-COLLIDING-SUPPORT-NAME: css/css-regions/interactivity/full-screen/support/util.js
-CSS-COLLIDING-SUPPORT-NAME: css/css-regions/interactivity/resizing/support/util.js
 
 # More duplicated copies of the above
 CSS-COLLIDING-SUPPORT-NAME: css/support/pattern-rgr-grg-rgr.png
@@ -508,7 +499,6 @@
 CSS-COLLIDING-SUPPORT-NAME: css/cssom/support/pattern-rgr-grg-rgr.png
 CSS-COLLIDING-SUPPORT-NAME: css/css-style-attr/support/pattern-rgr-grg-rgr.png
 CSS-COLLIDING-SUPPORT-NAME: css/CSS2/borders/support/pattern-rgr-grg-rgr.png
-CSS-COLLIDING-SUPPORT-NAME: css/css-regions/support/pattern-rgr-grg-rgr.png
 CSS-COLLIDING-SUPPORT-NAME: css/CSS2/zindex/support/pattern-rgr-grg-rgr.png
 CSS-COLLIDING-SUPPORT-NAME: css/CSS2/text/support/pattern-rgr-grg-rgr.png
 CSS-COLLIDING-SUPPORT-NAME: css/css-values/support/pattern-rgr-grg-rgr.png
@@ -534,7 +524,6 @@
 CSS-COLLIDING-SUPPORT-NAME: css/css-transforms/support/pattern-grg-rgr-grg.png
 CSS-COLLIDING-SUPPORT-NAME: css/cssom-view/support/pattern-grg-rgr-grg.png
 CSS-COLLIDING-SUPPORT-NAME: css/CSS2/fonts/support/pattern-grg-rgr-grg.png
-CSS-COLLIDING-SUPPORT-NAME: css/css-regions/support/pattern-grg-rgr-grg.png
 CSS-COLLIDING-SUPPORT-NAME: css/CSS2/support/pattern-grg-rgr-grg.png
 CSS-COLLIDING-SUPPORT-NAME: css/CSS2/selectors/support/pattern-grg-rgr-grg.png
 CSS-COLLIDING-SUPPORT-NAME: css/css-shapes/support/pattern-grg-rgr-grg.png
@@ -574,8 +563,6 @@
 
 # Duplicate filename where there's no actual merging
 # (i.e., we're being more aggressive than the build system at forbidding it)
-CSS-COLLIDING-REF-NAME: css/CSS2/positioning/position-relative-001-ref.xht
-CSS-COLLIDING-REF-NAME: css/css-regions/positioned-content/reference/position-relative-001-ref.html
 CSS-COLLIDING-REF-NAME: css/CSS2/text/text-transform-lowercase-001-ref.xht
 CSS-COLLIDING-REF-NAME: css/css-text/text-transform/reference/text-transform-lowercase-001-ref.xht
 CSS-COLLIDING-REF-NAME: css/CSS2/text/text-transform-capitalize-003-ref.xht
@@ -678,7 +665,6 @@
 MISSING-LINK: css/filter-effects/*.any.js
 
 # Tests that use WebKit/Blink testing APIs
-LAYOUTTESTS APIS: css/css-regions/interactivity/*
 LAYOUTTESTS APIS: import-maps/resources/jest-test-helper.js
 LAYOUTTESTS APIS: import-maps/common/resources/common-test-helper.js
 LAYOUTTESTS APIS: resources/chromium/generic_sensor_mocks.js
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/spaces/space-vertical-align.tentative-ref.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/spaces/space-vertical-align.tentative-ref.html
new file mode 100644
index 0000000..ed30edde
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/spaces/space-vertical-align.tentative-ref.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>space and vertical-align (reference)</title>
+</head>
+<body>
+  <p>Test passes if you see a green square.</p>
+  <div style="position: relative;">
+    <div style="position: absolute; top: 0px; left: 0px;
+                background: green; width: 100px; height: 100px;">
+    </div>
+  </div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/spaces/space-vertical-align.tentative.html b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/spaces/space-vertical-align.tentative.html
new file mode 100644
index 0000000..31fae69
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/mathml/presentation-markup/spaces/space-vertical-align.tentative.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>space and vertical-align</title>
+<link rel="help" href="https://mathml-refresh.github.io/mathml-core/#space-mspace">
+<link rel="match" href="space-vertical-align.tentative-ref.html"/>
+<meta name="assert" content="Verify that vertical-align property has no effect on mspace">
+</head>
+<body>
+  <p>Test passes if you see a green square.</p>
+  <div style="position: relative;">
+    <div style="position: absolute; top: 0px; left: 0px;
+                width: 200px; height: 200px;">
+      <math style="position: absolute; top: 0px; left: 0px">
+        <mspace width="50px" height="100px" style="background: green;vertical-align:50px"/>
+        <mspace width="50px" height="100px" style="background: green;vertical-align:50%"/>
+      </math>
+    </div>
+  </div>
+</body>
+</html>
diff --git a/third_party/blink/web_tests/external/wpt/native-file-system/idlharness.https.any.js b/third_party/blink/web_tests/external/wpt/native-file-system/idlharness.https.any.js
new file mode 100644
index 0000000..567912dd
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/native-file-system/idlharness.https.any.js
@@ -0,0 +1,15 @@
+// META: script=/resources/WebIDLParser.js
+// META: script=/resources/idlharness.js
+
+'use strict';
+
+idl_test(
+  ['native-file-system'],
+  ['html', 'dom'],
+  idl_array => {
+    idl_array.add_objects({
+      // TODO: Add instances of FileSystemHandle, FileSystemFileHandle,
+      // FileSystemDirectoryHandle and FileSystemWriter.
+    });
+  }
+);
diff --git a/third_party/blink/web_tests/external/wpt/tools/wpt/wpt.py b/third_party/blink/web_tests/external/wpt/tools/wpt/wpt.py
index 93301dd..49ee6345 100644
--- a/third_party/blink/web_tests/external/wpt/tools/wpt/wpt.py
+++ b/third_party/blink/web_tests/external/wpt/tools/wpt/wpt.py
@@ -40,13 +40,14 @@
     return rv
 
 
-def parse_args(argv, commands):
+def parse_args(argv, commands = load_commands()):
     parser = argparse.ArgumentParser()
     parser.add_argument("--venv", action="store", help="Path to an existing virtualenv to use")
     parser.add_argument("--skip-venv-setup", action="store_true",
                         dest="skip_venv_setup",
                         help="Whether to use the virtualenv as-is. Must set --venv as well")
     parser.add_argument("--debug", action="store_true", help="Run the debugger in case of an exception")
+    parser.add_argument("--py3", action="store_true", help="Run with python3")
     subparsers = parser.add_subparsers(dest="command")
     for command, props in iteritems(commands):
         subparsers.add_parser(command, help=props["help"], add_help=False)
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/animation-model/keyframe-effects/effect-value-replaced-animations-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/animation-model/keyframe-effects/effect-value-replaced-animations-expected.txt
deleted file mode 100644
index 516524d9..0000000
--- a/third_party/blink/web_tests/external/wpt/web-animations/animation-model/keyframe-effects/effect-value-replaced-animations-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-This is a testharness.js-based test.
-FAIL Removed animations do not contribute to animated style assert_equals: expected (string) "removed" but got (undefined) undefined
-FAIL Removed animations do not contribute to the effect stack assert_equals: expected (string) "removed" but got (undefined) undefined
-FAIL Persisted animations contribute to animated style promise_test: Unhandled rejection with value: object "TypeError: animA.persist is not a function"
-FAIL Persisted animations contribute to the effect stack assert_approx_equals: Opacity value should NOT include the contribution of the removed animation expected 0.4 +/- 0.0001 but got 0.5
-FAIL Animations persisted before they would be removed contribute to the effect stack promise_test: Unhandled rejection with value: object "TypeError: animA.persist is not a function"
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/idlharness.window-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/idlharness.window-expected.txt
index 8f208dbb..0f925fcc 100644
--- a/third_party/blink/web_tests/external/wpt/web-animations/idlharness.window-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/web-animations/idlharness.window-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-Found 143 tests; 133 PASS, 10 FAIL, 0 TIMEOUT, 0 NOTRUN.
+Found 143 tests; 137 PASS, 6 FAIL, 0 TIMEOUT, 0 NOTRUN.
 PASS idl_test setup
 PASS idl_test validation
 PASS Partial interface Document: original interface defined
@@ -51,7 +51,7 @@
 PASS Animation interface: attribute currentTime
 PASS Animation interface: attribute playbackRate
 PASS Animation interface: attribute playState
-FAIL Animation interface: attribute replaceState assert_true: The prototype object must have a property "replaceState" expected true got false
+PASS Animation interface: attribute replaceState
 PASS Animation interface: attribute pending
 PASS Animation interface: attribute ready
 PASS Animation interface: attribute finished
@@ -64,7 +64,7 @@
 PASS Animation interface: operation pause()
 PASS Animation interface: operation updatePlaybackRate(double)
 PASS Animation interface: operation reverse()
-FAIL Animation interface: operation persist() assert_own_property: interface prototype object missing non-static operation expected property "persist" missing
+PASS Animation interface: operation persist()
 FAIL Animation interface: operation commitStyles() assert_own_property: interface prototype object missing non-static operation expected property "commitStyles" missing
 PASS Animation must be primary interface of new Animation()
 PASS Stringification of new Animation()
@@ -75,7 +75,7 @@
 PASS Animation interface: new Animation() must inherit property "currentTime" with the proper type
 PASS Animation interface: new Animation() must inherit property "playbackRate" with the proper type
 PASS Animation interface: new Animation() must inherit property "playState" with the proper type
-FAIL Animation interface: new Animation() must inherit property "replaceState" with the proper type assert_inherits: property "replaceState" not found in prototype chain
+PASS Animation interface: new Animation() must inherit property "replaceState" with the proper type
 PASS Animation interface: new Animation() must inherit property "pending" with the proper type
 PASS Animation interface: new Animation() must inherit property "ready" with the proper type
 PASS Animation interface: new Animation() must inherit property "finished" with the proper type
@@ -89,7 +89,7 @@
 PASS Animation interface: new Animation() must inherit property "updatePlaybackRate(double)" with the proper type
 PASS Animation interface: calling updatePlaybackRate(double) on new Animation() with too few arguments must throw TypeError
 PASS Animation interface: new Animation() must inherit property "reverse()" with the proper type
-FAIL Animation interface: new Animation() must inherit property "persist()" with the proper type assert_inherits: property "persist" not found in prototype chain
+PASS Animation interface: new Animation() must inherit property "persist()" with the proper type
 FAIL Animation interface: new Animation() must inherit property "commitStyles()" with the proper type assert_inherits: property "commitStyles" not found in prototype chain
 PASS AnimationEffect interface: existence and properties of interface object
 PASS AnimationEffect interface object length
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animatable/getAnimations-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animatable/getAnimations-expected.txt
deleted file mode 100644
index 73798bb..0000000
--- a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animatable/getAnimations-expected.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-This is a testharness.js-based test.
-PASS Returns an empty array for an element with no animations
-PASS Returns both animations for an element with two animations
-PASS Returns only the animations specific to each sibling element
-PASS Returns only the animations specific to each parent/child element
-PASS Returns animations on descendants when subtree: true is specified
-PASS Returns animations on pseudo-elements when subtree: true is specified
-PASS Does NOT cross shadow-tree boundaries when subtree: true is specified
-PASS Returns animations for a foreign element
-PASS Does not return finished animations that do not fill forwards
-PASS Returns finished animations that fill forwards
-PASS Returns animations yet to reach their active phase
-PASS Does not return reversed finished animations that do not fill backwards
-PASS Returns reversed finished animations that fill backwards
-PASS Returns reversed animations yet to reach their active phase
-PASS Does not return animations with zero playback rate in before phase
-PASS Does not return animations with zero playback rate in after phase
-PASS Returns animations based on dynamic changes to individual animations' duration
-PASS Returns animations based on dynamic changes to individual animations' end delay
-PASS Returns animations based on dynamic changes to individual animations' iteration count
-PASS Returns animations based on dynamic changes to individual animations' current time
-FAIL Does not return an animation that has been removed assert_array_equals: lengths differ, expected array [object "[object Animation]"] length 1, got [object "[object Animation]", object "[object Animation]"] length 2
-FAIL Returns an animation that has been persisted promise_test: Unhandled rejection with value: object "TypeError: animA.persist is not a function"
-PASS Triggers a style change event
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/commitStyles-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/commitStyles-expected.txt
index 1281fd0..de43ada 100644
--- a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/commitStyles-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/commitStyles-expected.txt
@@ -6,7 +6,7 @@
 FAIL Commits values calculated mid-interval animation.commitStyles is not a function
 FAIL Commits variables as their computed values animation.commitStyles is not a function
 FAIL Commits em units as pixel values animation.commitStyles is not a function
-FAIL Commits the intermediate value of an animation in the middle of stack promise_test: Unhandled rejection with value: object "TypeError: animA.persist is not a function"
+FAIL Commits the intermediate value of an animation in the middle of stack promise_test: Unhandled rejection with value: object "TypeError: animB.commitStyles is not a function"
 FAIL Triggers mutation observers when updating style promise_test: Unhandled rejection with value: object "TypeError: animation.commitStyles is not a function"
 FAIL Does NOT trigger mutation observers when the change to style is redundant promise_test: Unhandled rejection with value: object "TypeError: animation.commitStyles is not a function"
 FAIL Throws if the target element is a pseudo element assert_throws: function "() => {
diff --git a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/style-change-events-expected.txt b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/style-change-events-expected.txt
index a9602061..f79ac73 100644
--- a/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/style-change-events-expected.txt
+++ b/third_party/blink/web_tests/external/wpt/web-animations/interfaces/Animation/style-change-events-expected.txt
@@ -1,5 +1,5 @@
 This is a testharness.js-based test.
-FAIL All property keys are recognized assert_in_array: Test property 'replaceState' should be one of the properties on  Animation value "replaceState" not in array ["effect", "startTime", "currentTime", "playbackRate", "playState", "pending", "id", "onfinish", "oncancel", "finish", "play", "pause", "reverse", "updatePlaybackRate", "cancel", "finished", "ready", "timeline", "Animation constructor"]
+FAIL All property keys are recognized assert_in_array: Test property 'onremove' should be one of the properties on  Animation value "onremove" not in array ["effect", "startTime", "currentTime", "playbackRate", "playState", "pending", "id", "onfinish", "oncancel", "finish", "play", "pause", "reverse", "updatePlaybackRate", "cancel", "finished", "ready", "replaceState", "timeline", "persist", "Animation constructor"]
 PASS Animation.effect produces expected style change events
 PASS Animation.startTime produces expected style change events
 PASS Animation.currentTime produces expected style change events
@@ -17,7 +17,9 @@
 PASS Animation.cancel produces expected style change events
 PASS Animation.finished produces expected style change events
 PASS Animation.ready produces expected style change events
+PASS Animation.replaceState produces expected style change events
 FAIL Animation.timeline produces expected style change events promise_test: Unhandled rejection with value: object "TypeError: Cannot assign to read only property 'timeline' of object '#<Animation>'"
+PASS Animation.persist produces expected style change events
 PASS Animation.Animation constructor produces expected style change events
 Harness: the test ran to completion.
 
diff --git a/third_party/blink/web_tests/external/wpt/workers/constructors/SharedWorker/undefined-arguments-expected.txt b/third_party/blink/web_tests/external/wpt/workers/constructors/SharedWorker/undefined-arguments-expected.txt
deleted file mode 100644
index 83e9421..0000000
--- a/third_party/blink/web_tests/external/wpt/workers/constructors/SharedWorker/undefined-arguments-expected.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-This is a testharness.js-based test.
-FAIL undefined as arguments assert_equals: second arg expected "undefined" but got ""
-Harness: the test ran to completion.
-
diff --git a/third_party/blink/web_tests/external/wpt/workers/constructors/SharedWorker/undefined-arguments.html b/third_party/blink/web_tests/external/wpt/workers/constructors/SharedWorker/undefined-arguments.html
index b9a3b369..bc0a75bc 100644
--- a/third_party/blink/web_tests/external/wpt/workers/constructors/SharedWorker/undefined-arguments.html
+++ b/third_party/blink/web_tests/external/wpt/workers/constructors/SharedWorker/undefined-arguments.html
@@ -14,7 +14,7 @@
   var worker = new SharedWorker(undefined, undefined);
   worker.port.addEventListener('message', this.step_func(function(e) {
     assert_equals(e.data[0], 'undefined', 'first arg');
-    assert_equals(e.data[1], 'undefined', 'second arg');
+    assert_equals(e.data[1], '', 'second arg');
     this.done();
   }), false);
   worker.port.start();
@@ -22,4 +22,4 @@
 </script>
 <!--
 */
-//-->
\ No newline at end of file
+//-->
diff --git a/third_party/blink/web_tests/external/wpt/workers/modules/dedicated-worker-import-meta.html b/third_party/blink/web_tests/external/wpt/workers/modules/dedicated-worker-import-meta.html
index 4ed56e2..cff8e91 100644
--- a/third_party/blink/web_tests/external/wpt/workers/modules/dedicated-worker-import-meta.html
+++ b/third_party/blink/web_tests/external/wpt/workers/modules/dedicated-worker-import-meta.html
@@ -19,7 +19,7 @@
 }, 'Test import.meta.url on the top-level module script.');
 
 promise_test(() => {
-  const script_url = 'import-meta-url-worker.js';
+  const script_url = 'import-meta-url-export.js';
   const worker = new Worker('resources/dynamic-import-given-url-worker.js',
                             { type: 'module' });
   worker.postMessage('./' + script_url);
@@ -35,7 +35,7 @@
 }, 'Test import.meta.url on the imported module script.');
 
 promise_test(() => {
-  const script_url = 'import-meta-url-worker.js';
+  const script_url = 'import-meta-url-export.js';
   const worker = new Worker('resources/dynamic-import-given-url-worker.js',
                             { type: 'module' });
   worker.postMessage('./' + script_url);
diff --git a/third_party/blink/web_tests/external/wpt/workers/modules/resources/dynamic-import-given-url-worker.js b/third_party/blink/web_tests/external/wpt/workers/modules/resources/dynamic-import-given-url-worker.js
index 2ea88b80..5510275 100644
--- a/third_party/blink/web_tests/external/wpt/workers/modules/resources/dynamic-import-given-url-worker.js
+++ b/third_party/blink/web_tests/external/wpt/workers/modules/resources/dynamic-import-given-url-worker.js
@@ -1,5 +1,21 @@
 // This worker dynamically imports the script URL sent by postMessage(), and
 // sends back an error name if the dynamic import fails.
-self.addEventListener('message', msg_event => {
-  import(msg_event.data).catch(e => postMessage(e.name));
-});
+if ('DedicatedWorkerGlobalScope' in self &&
+    self instanceof DedicatedWorkerGlobalScope) {
+  self.onmessage = msg_event => {
+    import(msg_event.data)
+        .then(module => postMessage(module.meta_url))
+        .catch(e => postMessage(e.name));
+  };
+} else if (
+    'SharedWorkerGlobalScope' in self &&
+    self instanceof SharedWorkerGlobalScope) {
+  self.onconnect = connect_event => {
+    const port = connect_event.ports[0];
+    port.onmessage = msg_event => {
+      import(msg_event.data)
+          .then(module => port.postMessage(module.meta_url))
+          .catch(e => port.postMessage(e.name));
+    };
+  };
+}
diff --git a/third_party/blink/web_tests/external/wpt/workers/modules/resources/import-meta-url-export.js b/third_party/blink/web_tests/external/wpt/workers/modules/resources/import-meta-url-export.js
new file mode 100644
index 0000000..5287b2e9
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/workers/modules/resources/import-meta-url-export.js
@@ -0,0 +1 @@
+export const meta_url = import.meta.url;
diff --git a/third_party/blink/web_tests/external/wpt/workers/modules/resources/import-meta-url-worker.js b/third_party/blink/web_tests/external/wpt/workers/modules/resources/import-meta-url-worker.js
index 9d909778..7887836 100644
--- a/third_party/blink/web_tests/external/wpt/workers/modules/resources/import-meta-url-worker.js
+++ b/third_party/blink/web_tests/external/wpt/workers/modules/resources/import-meta-url-worker.js
@@ -1 +1,10 @@
-postMessage(import.meta.url);
+if ('DedicatedWorkerGlobalScope' in self &&
+    self instanceof DedicatedWorkerGlobalScope) {
+  postMessage(import.meta.url);
+} else if (
+    'SharedWorkerGlobalScope' in self &&
+    self instanceof SharedWorkerGlobalScope) {
+  self.onconnect = e => {
+    e.ports[0].postMessage(import.meta.url);
+  };
+}
diff --git a/third_party/blink/web_tests/external/wpt/workers/modules/shared-worker-import-meta-expected.txt b/third_party/blink/web_tests/external/wpt/workers/modules/shared-worker-import-meta-expected.txt
new file mode 100644
index 0000000..229c339
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/workers/modules/shared-worker-import-meta-expected.txt
@@ -0,0 +1,6 @@
+This is a testharness.js-based test.
+PASS Test import.meta.url on the top-level module script.
+PASS Test import.meta.url on the imported module script.
+FAIL Test import.meta.url on the imported module script with a fragment. assert_true: expected true got false
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/external/wpt/workers/modules/shared-worker-import-meta.html b/third_party/blink/web_tests/external/wpt/workers/modules/shared-worker-import-meta.html
new file mode 100644
index 0000000..44cd9df9e
--- /dev/null
+++ b/third_party/blink/web_tests/external/wpt/workers/modules/shared-worker-import-meta.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<title>SharedWorker: import.meta</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+
+promise_test(() => {
+  const script_url = 'resources/import-meta-url-worker.js';
+  const worker = new SharedWorker(script_url, { type: 'module' });
+  return new Promise((resolve, reject) => {
+        worker.port.onmessage = resolve;
+        worker.onerror = (error) => reject(error && error.message);
+      })
+      .then(msg_event => assert_true(msg_event.data.endsWith(script_url)));
+}, 'Test import.meta.url on the top-level module script.');
+
+promise_test(() => {
+  const script_url = 'import-meta-url-export.js';
+  const worker = new SharedWorker(
+      'resources/dynamic-import-given-url-worker.js',
+      { type: 'module' });
+  worker.port.postMessage('./' + script_url);
+  return new Promise((resolve, reject) => {
+        worker.port.onmessage = resolve;
+        worker.onerror = (error) => reject(error && error.message);
+      })
+      .then(msg_event => assert_true(msg_event.data.endsWith(script_url)));
+}, 'Test import.meta.url on the imported module script.');
+
+promise_test(() => {
+  const script_url = 'import-meta-url-export.js';
+  const worker = new SharedWorker(
+      'resources/dynamic-import-given-url-worker.js',
+      { type: 'module' });
+  worker.port.postMessage('./' + script_url);
+
+  return new Promise((resolve, reject) => {
+        worker.port.onmessage = resolve;
+        worker.onerror = (error) => reject(error && error.message);
+      })
+      .then(msg_event => assert_true(msg_event.data.endsWith(script_url)))
+      .then(() => {
+        worker.port.postMessage('./' + script_url + '#1');
+        return new Promise(resolve => worker.port.onmessage = resolve);
+      })
+      .then(msg_event => assert_true(msg_event.data.endsWith(script_url)));
+}, 'Test import.meta.url on the imported module script with a fragment.');
+
+</script>
diff --git a/third_party/blink/web_tests/external/wpt/wpt b/third_party/blink/web_tests/external/wpt/wpt
index a24bc83a..316cbeba 100755
--- a/third_party/blink/web_tests/external/wpt/wpt
+++ b/third_party/blink/web_tests/external/wpt/wpt
@@ -2,4 +2,11 @@
 
 if __name__ == "__main__":
     from tools.wpt import wpt
-    wpt.main()
+    from sys import version_info, argv
+    args, extra = wpt.parse_args(argv[1:])
+
+    if args.py3 and version_info.major < 3:
+        from subprocess import call
+        call(['python3', argv[0]] + [args.command] + extra)
+    else:
+        wpt.main()
diff --git a/third_party/blink/web_tests/external/wpt/x-frame-options/deny.sub.html b/third_party/blink/web_tests/external/wpt/x-frame-options/deny.sub.html
index 626f204..dd8afe80 100644
--- a/third_party/blink/web_tests/external/wpt/x-frame-options/deny.sub.html
+++ b/third_party/blink/web_tests/external/wpt/x-frame-options/deny.sub.html
@@ -31,4 +31,31 @@
 
     document.body.appendChild(i);
   }, "`XFO: DENY` blocks cross-origin framing.");
+
+  async_test(t => {
+    var i = document.createElement('iframe');
+    i.src = "./support/xfo.py?value=DENY&csp_value=default-src%20'self'";
+
+    assert_no_message_from(i, t);
+
+    i.onload = t.step_func_done(_ => {
+      assert_equals(i.contentDocument, null);
+      i.remove();
+    });
+
+    document.body.appendChild(i);
+  }, "`XFO: DENY` blocks framing when CSP is present without a frame-ancestors directive.");
+
+  async_test(t => {
+    var i = document.createElement('iframe');
+    i.src = "./support/xfo.py?value=DENY&csp_value=frame-ancestors%20'self'";
+
+    wait_for_message_from(i, t)
+      .then(t.step_func_done(e => {
+        assert_equals(e.data, "Loaded");
+        i.remove();
+      }));
+
+    document.body.appendChild(i);
+  }, "`XFO: DENY` does not blocks framing when CSP is present with a frame-ancestors directive.");
 </script>
diff --git a/third_party/blink/web_tests/external/wpt/x-frame-options/support/xfo.py b/third_party/blink/web_tests/external/wpt/x-frame-options/support/xfo.py
index e8d8c4e..619cf55 100644
--- a/third_party/blink/web_tests/external/wpt/x-frame-options/support/xfo.py
+++ b/third_party/blink/web_tests/external/wpt/x-frame-options/support/xfo.py
@@ -2,7 +2,10 @@
     headers = [("Content-Type", "text/html"), ("X-Frame-Options", request.GET.first("value"))]
 
     if "value2" in request.GET:
-      headers.append(("X-Frame-Options", request.GET.first("value2")))
+        headers.append(("X-Frame-Options", request.GET.first("value2")))
+
+    if "csp_value" in request.GET:
+        headers.append(("Content-Security-Policy", request.GET.first("csp_value")))
 
     body = """<!DOCTYPE html>
         <html>
@@ -16,5 +19,3 @@
         </html>
     """
     return (headers, body)
-
-
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/css1/box_properties/acid_test-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/css1/box_properties/acid_test-expected.png
index 3723ff0..55ef0413 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/css1/box_properties/acid_test-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/css1/box_properties/acid_test-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/css2.1/t09-c5526c-display-00-e-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/css2.1/t09-c5526c-display-00-e-expected.png
index 6fff40dc..e2808b3 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/css2.1/t09-c5526c-display-00-e-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/css2.1/t09-c5526c-display-00-e-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/input/linux_rtl_composition_underline-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/input/linux_rtl_composition_underline-expected.png
index 72d45a7..c471c97 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/input/linux_rtl_composition_underline-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/input/linux_rtl_composition_underline-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selection-button-text-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selection-button-text-expected.png
index 955001079..2e1f68ba 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selection-button-text-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/editing/selection/selection-button-text-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-position/position-absolute-table-001-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-position/position-absolute-table-001-expected.txt
new file mode 100644
index 0000000..0046c86
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/external/wpt/css/css-position/position-absolute-table-001-expected.txt
@@ -0,0 +1,9 @@
+This is a testharness.js-based test.
+PASS table size is interpreted as border-box width by default
+FAIL table size is interpreted as minimum width assert_equals: right position is 0 expected 400 but got 300
+PASS table size border-box
+FAIL table size border-box interpreted as minimum width assert_equals: right position is 0 expected 400 but got 300
+FAIL table size content-box assert_equals: expected 100 but got 60
+FAIL table size content-box interpreted as minimum width assert_equals: right position is 0 expected 400 but got 300
+Harness: the test ran to completion.
+
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/block/basic/011-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/block/basic/011-expected.png
index 3723ff0..55ef0413 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/block/basic/011-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/block/basic/011-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/dom/HTMLMeterElement/meter-boundary-values-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/dom/HTMLMeterElement/meter-boundary-values-expected.png
index 1453b16..1120d0f 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/dom/HTMLMeterElement/meter-boundary-values-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/dom/HTMLMeterElement/meter-boundary-values-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/001-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/001-expected.png
index 201b971..1b1437d2 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/001-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/color/input-appearance-color-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/color/input-appearance-color-expected.png
index f5ecf85..8953a0e1 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/color/input-appearance-color-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/color/input-appearance-color-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/date/date-appearance-basic-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/date/date-appearance-basic-expected.png
index ff5ad094..4e37b1b 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/date/date-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/date/date-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png
index 6cb83bd..5b645e4 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/datetimelocal/datetimelocal-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/form-element-geometry-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/form-element-geometry-expected.png
index 0cdf49d..976ce2e 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/form-element-geometry-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/form-element-geometry-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/month/month-appearance-basic-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/month/month-appearance-basic-expected.png
index 7bf0fa8f..a97c81d 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/month/month-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/month/month-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/plaintext-mode-2-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/plaintext-mode-2-expected.png
index 0fd5279b..921aef0 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/plaintext-mode-2-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/plaintext-mode-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select-popup/popup-menu-appearance-zoom-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select-popup/popup-menu-appearance-zoom-expected.png
index 1670983..dbb8cfcb 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select-popup/popup-menu-appearance-zoom-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select-popup/popup-menu-appearance-zoom-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/menulist-update-text-popup-expected.txt b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/menulist-update-text-popup-expected.txt
index daa3d62..db00335 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/menulist-update-text-popup-expected.txt
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/menulist-update-text-popup-expected.txt
@@ -6,7 +6,7 @@
 C
 layer at (0,0) size 31x20
   LayoutBlockFlow (positioned) {DIV} at (8,50) size 31x20
-    LayoutMenuList {SELECT} at (0,0) size 31x20 [bgcolor=#DDDDDD] [border: (1px solid #A9A9A9)]
+    LayoutMenuList {SELECT} at (0,0) size 31x20 [bgcolor=#DDDDDD] [border: (1px solid #767676)]
       LayoutBlockFlow (anonymous) at (1,1) size 29x18
         LayoutText (anonymous) at (4,1) size 9x16
           text run at (4,1) width 9: "C"
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/select-multiple-rtl-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/select-multiple-rtl-expected.png
index 02fe528..012f167e 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/select-multiple-rtl-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/select-multiple-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/select-style-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/select-style-expected.png
index 26381dc..0dce5a6 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/select-style-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/select-style-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/select-writing-direction-natural-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/select-writing-direction-natural-expected.png
index 800f365..0261b83 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/select-writing-direction-natural-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/select/select-writing-direction-natural-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
index 9c6be8b..f687b1b 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
index 305c1ea5..a2658bd9 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
index 0a8caa7..ae12449 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/datetimelocal-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
index b9e8326..6c1fd30 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/time-suggestion-picker-appearance-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
index 8af9a71c..7d6b9c8 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/time-suggestion-picker-appearance-rtl-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
index d2772f2b..59911d4 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/suggestion-picker/time-suggestion-picker-appearance-with-scroll-bar-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/textarea/basic-textareas-quirks-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/textarea/basic-textareas-quirks-expected.png
index fac09cd..0087d45b 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/textarea/basic-textareas-quirks-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/textarea/basic-textareas-quirks-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/time/time-appearance-basic-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/time/time-appearance-basic-expected.png
index c576c4ed..dd8fc65 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/time/time-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/time/time-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/validation-bubble-appearance-rtl-ui-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
index 173d28c6..0164192 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/validation-bubble-appearance-rtl-ui-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/week/week-appearance-basic-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/week/week-appearance-basic-expected.png
index b2ef42e5..0d584594 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/week/week-appearance-basic-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/forms/week/week-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/overflow/overflow-x-y-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/overflow/overflow-x-y-expected.png
index 676a5f5..7046146 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/overflow/overflow-x-y-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/overflow/overflow-x-y-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/table/backgr_layers-opacity-collapsed-border-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/table/backgr_layers-opacity-collapsed-border-expected.png
index f087e6a..aefbecd 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/table/backgr_layers-opacity-collapsed-border-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/table/backgr_layers-opacity-collapsed-border-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/table/backgr_layers-opacity-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/table/backgr_layers-opacity-expected.png
index f087e6a..aefbecd 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/table/backgr_layers-opacity-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/fast/table/backgr_layers-opacity-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug1318-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug1318-expected.png
index 81ac93c..4fd196723 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug1318-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug1318-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug2479-2-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug2479-2-expected.png
index 8ef73cdd..8fc2457 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug2479-2-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug2479-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug30692-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug30692-expected.png
index 48f5958..57b4068 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug30692-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug30692-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug46368-1-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug46368-1-expected.png
index 98a52c0..abae75dd5 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug46368-1-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug46368-1-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug46368-2-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug46368-2-expected.png
index db022d5..baf764ec 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug46368-2-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug46368-2-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug59354-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug59354-expected.png
index f3d415a..d28ff5f 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug59354-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug59354-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug7342-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug7342-expected.png
index 8f61a95..ae8006a4 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug7342-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/tables/mozilla/bugs/bug7342-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/cascade/fast/forms/001-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/cascade/fast/forms/001-expected.png
new file mode 100644
index 0000000..1b1437d2
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/cascade/fast/forms/001-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/cascade/fast/forms/date/date-appearance-basic-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/cascade/fast/forms/date/date-appearance-basic-expected.png
new file mode 100644
index 0000000..4e37b1b
--- /dev/null
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/cascade/fast/forms/date/date-appearance-basic-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/text-antialias/international/bidi-listbox-atsui-expected.png b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/text-antialias/international/bidi-listbox-atsui-expected.png
index 33739c24..1038705 100644
--- a/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/text-antialias/international/bidi-listbox-atsui-expected.png
+++ b/third_party/blink/web_tests/flag-specific/disable-layout-ng/virtual/text-antialias/international/bidi-listbox-atsui-expected.png
Binary files differ
diff --git a/third_party/blink/web_tests/http/tests/devtools/command-line-api-inspect.js b/third_party/blink/web_tests/http/tests/devtools/command-line-api-inspect.js
index 3b106f2..33835fcc 100644
--- a/third_party/blink/web_tests/http/tests/devtools/command-line-api-inspect.js
+++ b/third_party/blink/web_tests/http/tests/devtools/command-line-api-inspect.js
@@ -28,15 +28,15 @@
   }
 
   TestRunner.runTestSuite([function testRevealElement(next) {
-    TestRunner.addSniffer(Common.Revealer, 'reveal', step2, true);
+    const originalReveal = Common.Revealer.reveal;
+    Common.Revealer.setRevealForTest((node) => {
+      if (!(node instanceof SDK.RemoteObject)) {
+        return Promise.resolve();
+      }
+      return originalReveal(node).then(step3);
+    });
     evalAndDump('inspect($(\'#p1\'))');
 
-    function step2(node, revealPromise) {
-      if (!(node instanceof SDK.RemoteObject))
-        return;
-      revealPromise.then(step3);
-    }
-
     function step3() {
       TestRunner.addResult('Selected node id: \'' + UI.panels.elements.selectedDOMNode().getAttribute('id') + '\'.');
       next();
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-breakpoints/restore-locations-for-breakpoint-with-broken-source-map.js b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-breakpoints/restore-locations-for-breakpoint-with-broken-source-map.js
index ef77fc6..693b681 100644
--- a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-breakpoints/restore-locations-for-breakpoint-with-broken-source-map.js
+++ b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-breakpoints/restore-locations-for-breakpoint-with-broken-source-map.js
@@ -24,14 +24,14 @@
   let stopRequest;
   let sourceMapRequested;
   let sourceMapRequest = new Promise(resolve => sourceMapRequested = resolve);
-  Host.ResourceLoader.load = function(url, headers, callback){
+  Host.ResourceLoader.setLoad(function(url, headers, callback){
     if (url.endsWith('a.js.map')) {
       stopRequest = () => callback(404);
       sourceMapRequested();
       return;
     }
     return origLoad.apply(this, arguments);
-  }
+  });
 
   await TestRunner.evaluateInPageAnonymously(`function foo() {
   console.log(42);
diff --git a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-console/debugger-command-line-api.js b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-console/debugger-command-line-api.js
index 4144a36..e1a0081 100644
--- a/third_party/blink/web_tests/http/tests/devtools/sources/debugger-console/debugger-command-line-api.js
+++ b/third_party/blink/web_tests/http/tests/devtools/sources/debugger-console/debugger-command-line-api.js
@@ -20,13 +20,13 @@
   `);
 
   TestRunner.addSniffer(SDK.RuntimeModel.prototype, '_inspectRequested', inspect);
-  TestRunner.addSniffer(Common.Revealer, 'reveal', oneRevealPromise, true);
-
-  function oneRevealPromise(node, revealPromise) {
-    if (!(node instanceof SDK.RemoteObject))
-      return;
-    revealPromise.then(updateFocusedNode);
-  }
+  const originalReveal = Common.Revealer.reveal;
+  Common.Revealer.setRevealForTest((node) => {
+    if (!(node instanceof SDK.RemoteObject)) {
+      return Promise.resolve();
+    }
+    return originalReveal(node).then(updateFocusedNode);
+  });
 
   function updateFocusedNode() {
     TestRunner.addResult('Selected node id: \'' + UI.panels.elements.selectedDOMNode().getAttribute('id') + '\'.');
diff --git a/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt b/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
index 2cbcfaf..1737f08 100644
--- a/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
+++ b/third_party/blink/web_tests/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt
@@ -1234,6 +1234,7 @@
     method constructor
 interface QuicTransport
     attribute @@toStringTag
+    getter closed
     method close
     method constructor
     method receiveDatagrams
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling-expected.txt b/third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling-expected.txt
new file mode 100644
index 0000000..6b0e284ed
--- /dev/null
+++ b/third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling-expected.txt
@@ -0,0 +1,2 @@
+Test that the profiler can record a profile with cpu throttling enabled.
+
diff --git a/third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling.js b/third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling.js
new file mode 100644
index 0000000..384e8560
--- /dev/null
+++ b/third_party/blink/web_tests/inspector-protocol/cpu-profiler/record-cpu-profile-with-cpu-throttling.js
@@ -0,0 +1,29 @@
+(async function(testRunner) {
+  const {page, session, dp} = await testRunner.startBlank(
+      'Test that the profiler can record a profile with cpu throttling enabled.');
+
+  await dp.Emulation.setCPUThrottlingRate({rate: 4});
+  await dp.Profiler.enable();
+  await dp.Profiler.start();
+
+  // Run some JS for at least a second to give a chance for the two signals to
+  // overlap.
+  await session.evaluate(`
+    let count = 0;
+    const limit = 1e6;
+    let i = 0;
+    let target = new Date();
+    target.setSeconds(target.getSeconds() + 1);
+    let time = new Date();
+    while (i < limit && time < target) {
+      count += i;
+      i++;
+      time = new Date();
+    }
+    window.count = count;
+  `);
+
+  await dp.Profiler.stop();
+
+  testRunner.completeTest();
+})
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt
index e0c57b7..00c6f0f 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-dedicated-worker-expected.txt
@@ -1164,6 +1164,7 @@
 [Worker]     method constructor
 [Worker] interface QuicTransport
 [Worker]     attribute @@toStringTag
+[Worker]     getter closed
 [Worker]     method close
 [Worker]     method constructor
 [Worker]     method receiveDatagrams
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
index 05cd3de..ac31dcc 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-expected.txt
@@ -180,12 +180,14 @@
     getter playState
     getter playbackRate
     getter ready
+    getter replaceState
     getter startTime
     getter timeline
     method cancel
     method constructor
     method finish
     method pause
+    method persist
     method play
     method reverse
     method updatePlaybackRate
@@ -6202,6 +6204,7 @@
     method constructor
 interface QuicTransport
     attribute @@toStringTag
+    getter closed
     method close
     method constructor
     method receiveDatagrams
diff --git a/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt b/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt
index c0c67b1..7c51a3b 100644
--- a/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt
+++ b/third_party/blink/web_tests/webexposed/global-interface-listing-shared-worker-expected.txt
@@ -1146,6 +1146,7 @@
 [Worker]     method constructor
 [Worker] interface QuicTransport
 [Worker]     attribute @@toStringTag
+[Worker]     getter closed
 [Worker]     method close
 [Worker]     method constructor
 [Worker]     method receiveDatagrams
diff --git a/third_party/crashpad/crashpad/BUILD.gn b/third_party/crashpad/crashpad/BUILD.gn
index b1294cf..f47c6aa 100644
--- a/third_party/crashpad/crashpad/BUILD.gn
+++ b/third_party/crashpad/crashpad/BUILD.gn
@@ -121,9 +121,7 @@
     }
 
     package("crashpad_database_util") {
-      deps = [
-        "tools:crashpad_database_util",
-      ]
+      deps = [ "tools:crashpad_database_util" ]
 
       binaries = [
         {
diff --git a/third_party/crashpad/crashpad/build/BUILD.gn b/third_party/crashpad/crashpad/build/BUILD.gn
index bc77bc8..6e6ccd64 100644
--- a/third_party/crashpad/crashpad/build/BUILD.gn
+++ b/third_party/crashpad/crashpad/build/BUILD.gn
@@ -32,9 +32,7 @@
 
 group("default_exe_manifest_win") {
   if (crashpad_is_in_chromium) {
-    deps = [
-      "//build/win:default_exe_manifest",
-    ]
+    deps = [ "//build/win:default_exe_manifest" ]
   }
 }
 
diff --git a/third_party/crashpad/crashpad/client/BUILD.gn b/third_party/crashpad/crashpad/client/BUILD.gn
index bfe0332..a61c66d0 100644
--- a/third_party/crashpad/crashpad/client/BUILD.gn
+++ b/third_party/crashpad/crashpad/client/BUILD.gn
@@ -90,15 +90,11 @@
   }
 
   if (crashpad_is_linux || crashpad_is_android) {
-    deps += [
-      "../third_party/lss",
-    ]
+    deps += [ "../third_party/lss" ]
   }
 
   if (crashpad_is_fuchsia) {
-    deps += [
-      "../third_party/fuchsia",
-    ]
+    deps += [ "../third_party/fuchsia" ]
     if (crashpad_is_in_fuchsia) {
       deps += [ "//zircon/public/lib/fdio" ]
     }
@@ -141,9 +137,7 @@
     "../util",
   ]
 
-  data_deps = [
-    "../handler:crashpad_handler",
-  ]
+  data_deps = [ "../handler:crashpad_handler" ]
 
   if (crashpad_is_win) {
     data_deps += [ "../handler:crashpad_handler_console" ]
diff --git a/third_party/crashpad/crashpad/handler/BUILD.gn b/third_party/crashpad/crashpad/handler/BUILD.gn
index 550f686a..b06f68a 100644
--- a/third_party/crashpad/crashpad/handler/BUILD.gn
+++ b/third_party/crashpad/crashpad/handler/BUILD.gn
@@ -101,22 +101,16 @@
   # CrashpadHandlerMain is defined in a separate target so that it can be
   # overriden by implementers
   source_set("crashpad_handler_main") {
-    sources = [
-      "crashpad_handler_main.cc",
-    ]
+    sources = [ "crashpad_handler_main.cc" ]
 
-    deps = [
-      ":handler",
-    ]
+    deps = [ ":handler" ]
   }
 }
 
 source_set("handler_test") {
   testonly = true
 
-  sources = [
-    "minidump_to_upload_parameters_test.cc",
-  ]
+  sources = [ "minidump_to_upload_parameters_test.cc" ]
 
   if (crashpad_is_linux || crashpad_is_android) {
     sources += [ "linux/exception_handler_server_test.cc" ]
@@ -147,9 +141,7 @@
 }
 
 crashpad_executable("crashpad_handler") {
-  sources = [
-    "main.cc",
-  ]
+  sources = [ "main.cc" ]
 
   deps = [
     ":handler",
@@ -177,26 +169,18 @@
 # handler executable an acceptable name.
 if (crashpad_is_android) {
   copy("crashpad_handler_named_as_so") {
-    deps = [
-      ":crashpad_handler",
-    ]
+    deps = [ ":crashpad_handler" ]
 
-    sources = [
-      "$root_out_dir/crashpad_handler",
-    ]
+    sources = [ "$root_out_dir/crashpad_handler" ]
 
-    outputs = [
-      "$root_out_dir/libcrashpad_handler.so",
-    ]
+    outputs = [ "$root_out_dir/libcrashpad_handler.so" ]
   }
 
   crashpad_executable("crashpad_handler_trampoline") {
     set_sources_assignment_filter([])
     output_name = "libcrashpad_handler_trampoline.so"
 
-    sources = [
-      "linux/handler_trampoline.cc",
-    ]
+    sources = [ "linux/handler_trampoline.cc" ]
 
     ldflags = [ "-llog" ]
 
@@ -211,9 +195,7 @@
 crashpad_executable("crashpad_handler_test_extended_handler") {
   testonly = true
 
-  sources = [
-    "crashpad_handler_test_extended_handler.cc",
-  ]
+  sources = [ "crashpad_handler_test_extended_handler.cc" ]
 
   deps = [
     ":handler",
@@ -227,9 +209,7 @@
 
 if (crashpad_is_win) {
   crashpad_executable("crashpad_handler_com") {
-    sources = [
-      "main.cc",
-    ]
+    sources = [ "main.cc" ]
 
     # Avoid .exp, .ilk, and .lib file collisions with crashpad_handler.exe by
     # having this target produce crashpad_handler_com.com. Don’t use this target
@@ -245,23 +225,15 @@
   }
 
   copy("crashpad_handler_console") {
-    deps = [
-      ":crashpad_handler_com",
-    ]
-    sources = [
-      "$root_out_dir/crashpad_handler_com.com",
-    ]
-    outputs = [
-      "$root_out_dir/crashpad_handler.com",
-    ]
+    deps = [ ":crashpad_handler_com" ]
+    sources = [ "$root_out_dir/crashpad_handler_com.com" ]
+    outputs = [ "$root_out_dir/crashpad_handler.com" ]
   }
 
   crashpad_executable("crash_other_program") {
     testonly = true
 
-    sources = [
-      "win/crash_other_program.cc",
-    ]
+    sources = [ "win/crash_other_program.cc" ]
 
     deps = [
       "../client",
@@ -274,9 +246,7 @@
   crashpad_executable("crashy_program") {
     testonly = true
 
-    sources = [
-      "win/crashy_test_program.cc",
-    ]
+    sources = [ "win/crashy_test_program.cc" ]
 
     deps = [
       "../client",
@@ -287,9 +257,7 @@
   crashpad_executable("crashy_signal") {
     testonly = true
 
-    sources = [
-      "win/crashy_signal.cc",
-    ]
+    sources = [ "win/crashy_signal.cc" ]
 
     cflags = [ "/wd4702" ]  # Unreachable code.
 
@@ -302,17 +270,13 @@
   crashpad_executable("fake_handler_that_crashes_at_startup") {
     testonly = true
 
-    sources = [
-      "win/fake_handler_that_crashes_at_startup.cc",
-    ]
+    sources = [ "win/fake_handler_that_crashes_at_startup.cc" ]
   }
 
   crashpad_executable("hanging_program") {
     testonly = true
 
-    sources = [
-      "win/hanging_program.cc",
-    ]
+    sources = [ "win/hanging_program.cc" ]
 
     deps = [
       "../client",
@@ -323,17 +287,13 @@
   crashpad_loadable_module("loader_lock_dll") {
     testonly = true
 
-    sources = [
-      "win/loader_lock_dll.cc",
-    ]
+    sources = [ "win/loader_lock_dll.cc" ]
   }
 
   crashpad_executable("self_destroying_program") {
     testonly = true
 
-    sources = [
-      "win/self_destroying_test_program.cc",
-    ]
+    sources = [ "win/self_destroying_test_program.cc" ]
 
     deps = [
       "../client",
@@ -348,9 +308,7 @@
     crashpad_executable("crashy_z7_loader") {
       testonly = true
 
-      sources = [
-        "win/crashy_test_z7_loader.cc",
-      ]
+      sources = [ "win/crashy_test_z7_loader.cc" ]
 
       deps = [
         "../client",
diff --git a/third_party/crashpad/crashpad/minidump/BUILD.gn b/third_party/crashpad/crashpad/minidump/BUILD.gn
index 86966d82..eb9f780 100644
--- a/third_party/crashpad/crashpad/minidump/BUILD.gn
+++ b/third_party/crashpad/crashpad/minidump/BUILD.gn
@@ -71,9 +71,7 @@
 
   public_configs = [ "..:crashpad_config" ]
 
-  public_deps = [
-    "../compat",
-  ]
+  public_deps = [ "../compat" ]
 
   deps = [
     "../snapshot",
@@ -113,9 +111,7 @@
 
   public_configs = [ "..:crashpad_config" ]
 
-  public_deps = [
-    ":minidump",
-  ]
+  public_deps = [ ":minidump" ]
 
   deps = [
     "../third_party/gtest:gtest",
@@ -154,9 +150,7 @@
     "minidump_writable_test.cc",
   ]
 
-  configs += [
-    "../build:crashpad_is_in_fuchsia",
-  ]
+  configs += [ "../build:crashpad_is_in_fuchsia" ]
 
   deps = [
     ":test_support",
diff --git a/third_party/crashpad/crashpad/snapshot/BUILD.gn b/third_party/crashpad/crashpad/snapshot/BUILD.gn
index 0f1e68d..03c0677c 100644
--- a/third_party/crashpad/crashpad/snapshot/BUILD.gn
+++ b/third_party/crashpad/crashpad/snapshot/BUILD.gn
@@ -241,9 +241,7 @@
   # Chromium's fuzzer_test template, it's better to rely on |use_fuzzing_engine|
   # and disable fuzz targets as they will not build successfully without it.
   crashpad_fuzzer_test("elf_image_reader_fuzzer") {
-    sources = [
-      "elf/elf_image_reader_fuzzer.cc",
-    ]
+    sources = [ "elf/elf_image_reader_fuzzer.cc" ]
 
     deps = [
       ":snapshot",
@@ -277,9 +275,7 @@
 
   public_configs = [ "..:crashpad_config" ]
 
-  public_deps = [
-    ":snapshot",
-  ]
+  public_deps = [ ":snapshot" ]
 
   deps = [
     "../compat",
@@ -298,9 +294,7 @@
     # There’s no way to make the link depend on this file. “inputs” doesn’t have
     # the intended effect in a config. https://crbug.com/781858,
     # https://crbug.com/796187.
-    inputs = [
-      "elf/test_exported_symbols.sym",
-    ]
+    inputs = [ "elf/test_exported_symbols.sym" ]
     ldflags = [ "-Wl,--dynamic-list," + rebase_path(inputs[0], root_build_dir) ]
   }
 }
@@ -434,9 +428,7 @@
 
 crashpad_loadable_module("crashpad_snapshot_test_module") {
   testonly = true
-  sources = [
-    "crashpad_info_client_options_test_module.cc",
-  ]
+  sources = [ "crashpad_info_client_options_test_module.cc" ]
   deps = [
     "../client",
     "../third_party/mini_chromium:base",
@@ -445,9 +437,7 @@
 
 crashpad_loadable_module("crashpad_snapshot_test_module_large") {
   testonly = true
-  sources = [
-    "crashpad_info_size_test_module.cc",
-  ]
+  sources = [ "crashpad_info_size_test_module.cc" ]
 
   deps = []
   if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
@@ -461,9 +451,7 @@
 
 crashpad_loadable_module("crashpad_snapshot_test_module_small") {
   testonly = true
-  sources = [
-    "crashpad_info_size_test_module.cc",
-  ]
+  sources = [ "crashpad_info_size_test_module.cc" ]
 
   deps = []
   if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) {
@@ -479,9 +467,7 @@
     target_cpu != "mipsel" && target_cpu != "mips64el") {
   crashpad_loadable_module("crashpad_snapshot_test_both_dt_hash_styles") {
     testonly = true
-    sources = [
-      "hash_types_test.cc",
-    ]
+    sources = [ "hash_types_test.cc" ]
 
     # This makes `ld` emit both .hash and .gnu.hash sections.
     ldflags = [ "-Wl,--hash-style=both" ]
@@ -498,18 +484,14 @@
 
   crashpad_executable("crashpad_snapshot_test_no_op") {
     testonly = true
-    sources = [
-      "mac/mach_o_image_annotations_reader_test_no_op.cc",
-    ]
+    sources = [ "mac/mach_o_image_annotations_reader_test_no_op.cc" ]
   }
 }
 
 if (crashpad_is_win) {
   crashpad_executable("crashpad_snapshot_test_annotations") {
     testonly = true
-    sources = [
-      "win/crashpad_snapshot_test_annotations.cc",
-    ]
+    sources = [ "win/crashpad_snapshot_test_annotations.cc" ]
     deps = [
       "../client",
       "../compat",
@@ -519,9 +501,7 @@
 
   crashpad_executable("crashpad_snapshot_test_crashing_child") {
     testonly = true
-    sources = [
-      "win/crashpad_snapshot_test_crashing_child.cc",
-    ]
+    sources = [ "win/crashpad_snapshot_test_crashing_child.cc" ]
     deps = [
       "../client",
       "../compat",
@@ -532,9 +512,7 @@
 
   crashpad_executable("crashpad_snapshot_test_dump_without_crashing") {
     testonly = true
-    sources = [
-      "win/crashpad_snapshot_test_dump_without_crashing.cc",
-    ]
+    sources = [ "win/crashpad_snapshot_test_dump_without_crashing.cc" ]
     deps = [
       "../client",
       "../compat",
@@ -545,9 +523,7 @@
 
   crashpad_executable("crashpad_snapshot_test_extra_memory_ranges") {
     testonly = true
-    sources = [
-      "win/crashpad_snapshot_test_extra_memory_ranges.cc",
-    ]
+    sources = [ "win/crashpad_snapshot_test_extra_memory_ranges.cc" ]
     deps = [
       "../client",
       "../compat",
@@ -557,9 +533,7 @@
 
   crashpad_executable("crashpad_snapshot_test_image_reader") {
     testonly = true
-    sources = [
-      "win/crashpad_snapshot_test_image_reader.cc",
-    ]
+    sources = [ "win/crashpad_snapshot_test_image_reader.cc" ]
     deps = [
       "../client",
       "../compat",
@@ -578,9 +552,7 @@
 
   crashpad_loadable_module("crashpad_snapshot_test_image_reader_module") {
     testonly = true
-    sources = [
-      "win/crashpad_snapshot_test_image_reader_module.cc",
-    ]
+    sources = [ "win/crashpad_snapshot_test_image_reader_module.cc" ]
     deps = [
       "../client",
       "../third_party/mini_chromium:base",
diff --git a/third_party/crashpad/crashpad/test/BUILD.gn b/third_party/crashpad/crashpad/test/BUILD.gn
index f9c8132..9242c69 100644
--- a/third_party/crashpad/crashpad/test/BUILD.gn
+++ b/third_party/crashpad/crashpad/test/BUILD.gn
@@ -130,9 +130,7 @@
     "../build:crashpad_is_in_fuchsia",
   ]
 
-  data = [
-    "test_paths_test_data_root.txt",
-  ]
+  data = [ "test_paths_test_data_root.txt" ]
 
   deps = [
     "../compat",
@@ -161,9 +159,7 @@
   }
 
   if (crashpad_is_fuchsia) {
-    public_deps = [
-      "../third_party/fuchsia",
-    ]
+    public_deps = [ "../third_party/fuchsia" ]
     if (crashpad_is_in_fuchsia) {
       deps += [ "//zircon/public/lib/fdio" ]
     }
@@ -217,9 +213,7 @@
     "../util",
   ]
 
-  data_deps = [
-    ":crashpad_test_test_multiprocess_exec_test_child",
-  ]
+  data_deps = [ ":crashpad_test_test_multiprocess_exec_test_child" ]
 
   if (crashpad_is_ios) {
     deps -= [
@@ -233,13 +227,9 @@
 
 if (!crashpad_is_ios) {
   crashpad_executable("crashpad_test_test_multiprocess_exec_test_child") {
-    sources = [
-      "multiprocess_exec_test_child.cc",
-    ]
+    sources = [ "multiprocess_exec_test_child.cc" ]
 
-    deps = [
-      "../third_party/mini_chromium:base",
-    ]
+    deps = [ "../third_party/mini_chromium:base" ]
   }
 }
 
@@ -260,9 +250,7 @@
 
 static_library("gmock_main") {
   testonly = true
-  sources = [
-    "gtest_main.cc",
-  ]
+  sources = [ "gtest_main.cc" ]
   configs += [ "../build:crashpad_is_in_chromium" ]
   defines = [ "CRASHPAD_TEST_LAUNCHER_GMOCK" ]
   deps = [
@@ -279,9 +267,7 @@
 
 static_library("gtest_main") {
   testonly = true
-  sources = [
-    "gtest_main.cc",
-  ]
+  sources = [ "gtest_main.cc" ]
   configs += [ "../build:crashpad_is_in_chromium" ]
   defines = [ "CRASHPAD_TEST_LAUNCHER_GTEST" ]
   deps = [
diff --git a/third_party/crashpad/crashpad/third_party/apple_cf/BUILD.gn b/third_party/crashpad/crashpad/third_party/apple_cf/BUILD.gn
index 43c62eb..9e37354 100644
--- a/third_party/crashpad/crashpad/third_party/apple_cf/BUILD.gn
+++ b/third_party/crashpad/crashpad/third_party/apple_cf/BUILD.gn
@@ -13,7 +13,5 @@
 # limitations under the License.
 
 source_set("apple_cf") {
-  sources = [
-    "CFStreamAbstract.h",
-  ]
+  sources = [ "CFStreamAbstract.h" ]
 }
diff --git a/third_party/crashpad/crashpad/third_party/cpp-httplib/BUILD.gn b/third_party/crashpad/crashpad/third_party/cpp-httplib/BUILD.gn
index be2a6d7..2cbb72f5 100644
--- a/third_party/crashpad/crashpad/third_party/cpp-httplib/BUILD.gn
+++ b/third_party/crashpad/crashpad/third_party/cpp-httplib/BUILD.gn
@@ -15,7 +15,5 @@
 source_set("cpp-httplib") {
   testonly = true
   include_dirs = [ "cpp-httplib" ]
-  sources = [
-    "cpp-httplib/httplib.h",
-  ]
+  sources = [ "cpp-httplib/httplib.h" ]
 }
diff --git a/third_party/crashpad/crashpad/third_party/fuchsia/BUILD.gn b/third_party/crashpad/crashpad/third_party/fuchsia/BUILD.gn
index 88866c6..4111c58 100644
--- a/third_party/crashpad/crashpad/third_party/fuchsia/BUILD.gn
+++ b/third_party/crashpad/crashpad/third_party/fuchsia/BUILD.gn
@@ -200,19 +200,13 @@
         cpp_source,
       ]
 
-      deps = [
-        ":fidlc_${fidl_source.library_name}",
-      ]
+      deps = [ ":fidlc_${fidl_source.library_name}" ]
     }
 
     source_set("${fidl_source.library_name}_tables") {
-      sources = [
-        coding_tables,
-      ]
+      sources = [ coding_tables ]
 
-      deps = [
-        ":fidlc_${fidl_source.library_name}",
-      ]
+      deps = [ ":fidlc_${fidl_source.library_name}" ]
 
       public_configs = [ ":fidl_config" ]
     }
diff --git a/third_party/crashpad/crashpad/third_party/glibc/BUILD.gn b/third_party/crashpad/crashpad/third_party/glibc/BUILD.gn
index e12febf..3f2b08b 100644
--- a/third_party/crashpad/crashpad/third_party/glibc/BUILD.gn
+++ b/third_party/crashpad/crashpad/third_party/glibc/BUILD.gn
@@ -13,7 +13,5 @@
 # limitations under the License.
 
 source_set("glibc") {
-  sources = [
-    "elf/elf.h",
-  ]
+  sources = [ "elf/elf.h" ]
 }
diff --git a/third_party/crashpad/crashpad/third_party/gtest/BUILD.gn b/third_party/crashpad/crashpad/third_party/gtest/BUILD.gn
index c2058e2..ae55259 100644
--- a/third_party/crashpad/crashpad/third_party/gtest/BUILD.gn
+++ b/third_party/crashpad/crashpad/third_party/gtest/BUILD.gn
@@ -18,28 +18,20 @@
 if (crashpad_is_in_chromium) {
   group("gtest") {
     testonly = true
-    public_deps = [
-      "//testing/gtest",
-    ]
+    public_deps = [ "//testing/gtest" ]
   }
   group("gmock") {
     testonly = true
-    public_deps = [
-      "//testing/gmock",
-    ]
+    public_deps = [ "//testing/gmock" ]
   }
 } else if (crashpad_is_in_dart || crashpad_is_in_fuchsia) {
   group("gtest") {
     testonly = true
-    public_deps = [
-      "//third_party/googletest:gtest",
-    ]
+    public_deps = [ "//third_party/googletest:gtest" ]
   }
   group("gmock") {
     testonly = true
-    public_deps = [
-      "//third_party/googletest:gmock",
-    ]
+    public_deps = [ "//third_party/googletest:gmock" ]
   }
 } else if (crashpad_is_standalone) {
   config("gtest_private_config") {
@@ -96,9 +88,7 @@
     ]
     configs += [ ":gtest_private_config" ]
     if (crashpad_is_fuchsia) {
-      deps = [
-        "../fuchsia",
-      ]
+      deps = [ "../fuchsia" ]
     }
   }
 
@@ -107,12 +97,8 @@
     visibility = [ ":*" ]
 
     testonly = true
-    sources = [
-      "gtest/googletest/src/gtest_main.cc",
-    ]
-    deps = [
-      ":gtest",
-    ]
+    sources = [ "gtest/googletest/src/gtest_main.cc" ]
+    deps = [ ":gtest" ]
   }
 
   test("gtest_all_test") {
@@ -150,31 +136,19 @@
   }
 
   test("gtest_environment_test") {
-    sources = [
-      "gtest/googletest/test/gtest_environment_test.cc",
-    ]
+    sources = [ "gtest/googletest/test/gtest_environment_test.cc" ]
     configs += [ ":gtest_private_config" ]
-    deps = [
-      ":gtest",
-    ]
+    deps = [ ":gtest" ]
   }
 
   test("gtest_listener_test") {
-    sources = [
-      "gtest/googletest/test/googletest-listener-test.cc",
-    ]
-    deps = [
-      ":gtest",
-    ]
+    sources = [ "gtest/googletest/test/googletest-listener-test.cc" ]
+    deps = [ ":gtest" ]
   }
 
   test("gtest_no_test") {
-    sources = [
-      "gtest/googletest/test/gtest_no_test_unittest.cc",
-    ]
-    deps = [
-      ":gtest",
-    ]
+    sources = [ "gtest/googletest/test/gtest_no_test_unittest.cc" ]
+    deps = [ ":gtest" ]
   }
 
   test("gtest_param_test") {
@@ -187,9 +161,7 @@
       "//third_party/mini_chromium/mini_chromium/build:Wexit_time_destructors",
     ]
     configs += [ ":gtest_private_config" ]
-    deps = [
-      ":gtest",
-    ]
+    deps = [ ":gtest" ]
 
     if (crashpad_is_clang) {
       cflags_cc = [
@@ -201,28 +173,18 @@
   }
 
   test("gtest_premature_exit_test") {
-    sources = [
-      "gtest/googletest/test/gtest_premature_exit_test.cc",
-    ]
-    deps = [
-      ":gtest",
-    ]
+    sources = [ "gtest/googletest/test/gtest_premature_exit_test.cc" ]
+    deps = [ ":gtest" ]
   }
 
   test("gtest_repeat_test") {
-    sources = [
-      "gtest/googletest/test/gtest_repeat_test.cc",
-    ]
+    sources = [ "gtest/googletest/test/gtest_repeat_test.cc" ]
     configs += [ ":gtest_private_config" ]
-    deps = [
-      ":gtest",
-    ]
+    deps = [ ":gtest" ]
   }
 
   test("gtest_sole_header_test") {
-    sources = [
-      "gtest/googletest/test/gtest_sole_header_test.cc",
-    ]
+    sources = [ "gtest/googletest/test/gtest_sole_header_test.cc" ]
     deps = [
       ":gtest",
       ":gtest_main",
@@ -230,22 +192,14 @@
   }
 
   test("gtest_stress_test") {
-    sources = [
-      "gtest/googletest/test/gtest_stress_test.cc",
-    ]
+    sources = [ "gtest/googletest/test/gtest_stress_test.cc" ]
     configs += [ ":gtest_private_config" ]
-    deps = [
-      ":gtest",
-    ]
+    deps = [ ":gtest" ]
   }
 
   test("gtest_unittest_api_test") {
-    sources = [
-      "gtest/googletest/test/gtest-unittest-api_test.cc",
-    ]
-    deps = [
-      ":gtest",
-    ]
+    sources = [ "gtest/googletest/test/gtest-unittest-api_test.cc" ]
+    deps = [ ":gtest" ]
   }
 
   group("gtest_all_tests") {
@@ -319,18 +273,14 @@
       "//third_party/mini_chromium/mini_chromium/build:Wexit_time_destructors",
     ]
     configs += [ ":gmock_private_config" ]
-    deps = [
-      ":gtest",
-    ]
+    deps = [ ":gtest" ]
   }
 
   static_library("gmock_main") {
     # Tests outside of this file should use ../../test:gmock_main instead.
     visibility = [ ":*" ]
     testonly = true
-    sources = [
-      "gtest/googlemock/src/gmock_main.cc",
-    ]
+    sources = [ "gtest/googlemock/src/gmock_main.cc" ]
     deps = [
       ":gmock",
       ":gtest",
@@ -389,9 +339,7 @@
   }
 
   test("gmock_stress_test") {
-    sources = [
-      "gtest/googlemock/test/gmock_stress_test.cc",
-    ]
+    sources = [ "gtest/googlemock/test/gmock_stress_test.cc" ]
     configs -= [
       "//third_party/mini_chromium/mini_chromium/build:Wexit_time_destructors",
     ]
diff --git a/third_party/crashpad/crashpad/third_party/lss/BUILD.gn b/third_party/crashpad/crashpad/third_party/lss/BUILD.gn
index 1e0bd2b..c0652cd 100644
--- a/third_party/crashpad/crashpad/third_party/lss/BUILD.gn
+++ b/third_party/crashpad/crashpad/third_party/lss/BUILD.gn
@@ -25,7 +25,5 @@
 source_set("lss") {
   public_configs = [ ":lss_config" ]
 
-  sources = [
-    "lss.h",
-  ]
+  sources = [ "lss.h" ]
 }
diff --git a/third_party/crashpad/crashpad/third_party/mini_chromium/BUILD.gn b/third_party/crashpad/crashpad/third_party/mini_chromium/BUILD.gn
index 095267f..50d1513 100644
--- a/third_party/crashpad/crashpad/third_party/mini_chromium/BUILD.gn
+++ b/third_party/crashpad/crashpad/third_party/mini_chromium/BUILD.gn
@@ -16,17 +16,11 @@
 
 group("base") {
   if (crashpad_is_in_chromium) {
-    public_deps = [
-      "//base",
-    ]
+    public_deps = [ "//base" ]
   } else if (crashpad_is_standalone || crashpad_is_in_fuchsia) {
-    public_deps = [
-      "mini_chromium/base",
-    ]
+    public_deps = [ "mini_chromium/base" ]
   } else if (crashpad_is_in_dart) {
-    public_deps = [
-      "//third_party/mini_chromium/mini_chromium/base"
-    ]
+    public_deps = [ "//third_party/mini_chromium/mini_chromium/base" ]
   }
 }
 
@@ -34,8 +28,6 @@
   testonly = true
 
   if (crashpad_is_in_chromium) {
-    public_deps = [
-      "//base/test:test_support",
-    ]
+    public_deps = [ "//base/test:test_support" ]
   }
 }
diff --git a/third_party/crashpad/crashpad/third_party/xnu/BUILD.gn b/third_party/crashpad/crashpad/third_party/xnu/BUILD.gn
index b6a9404..2079ecf 100644
--- a/third_party/crashpad/crashpad/third_party/xnu/BUILD.gn
+++ b/third_party/crashpad/crashpad/third_party/xnu/BUILD.gn
@@ -13,7 +13,5 @@
 # limitations under the License.
 
 source_set("xnu") {
-  sources = [
-    "EXTERNAL_HEADERS/mach-o/loader.h",
-  ]
+  sources = [ "EXTERNAL_HEADERS/mach-o/loader.h" ]
 }
diff --git a/third_party/crashpad/crashpad/third_party/zlib/BUILD.gn b/third_party/crashpad/crashpad/third_party/zlib/BUILD.gn
index 3267b981..1723c11d 100644
--- a/third_party/crashpad/crashpad/third_party/zlib/BUILD.gn
+++ b/third_party/crashpad/crashpad/third_party/zlib/BUILD.gn
@@ -36,9 +36,7 @@
 if (zlib_source == "external") {
   group("zlib") {
     public_configs = [ ":zlib_config" ]
-    public_deps = [
-      "//third_party/zlib",
-    ]
+    public_deps = [ "//third_party/zlib" ]
   }
 } else if (zlib_source == "system") {
   source_set("zlib") {
diff --git a/third_party/crashpad/crashpad/tools/BUILD.gn b/third_party/crashpad/crashpad/tools/BUILD.gn
index 99332389..acd83b3 100644
--- a/third_party/crashpad/crashpad/tools/BUILD.gn
+++ b/third_party/crashpad/crashpad/tools/BUILD.gn
@@ -22,15 +22,11 @@
 
   public_configs = [ "..:crashpad_config" ]
 
-  deps = [
-    "../third_party/mini_chromium:base",
-  ]
+  deps = [ "../third_party/mini_chromium:base" ]
 }
 
 crashpad_executable("crashpad_database_util") {
-  sources = [
-    "crashpad_database_util.cc",
-  ]
+  sources = [ "crashpad_database_util.cc" ]
 
   deps = [
     ":tool_support",
@@ -43,9 +39,7 @@
 }
 
 crashpad_executable("crashpad_http_upload") {
-  sources = [
-    "crashpad_http_upload.cc",
-  ]
+  sources = [ "crashpad_http_upload.cc" ]
 
   deps = [
     ":tool_support",
@@ -57,9 +51,7 @@
 }
 
 crashpad_executable("base94_encoder") {
-  sources = [
-    "base94_encoder.cc",
-  ]
+  sources = [ "base94_encoder.cc" ]
   deps = [
     ":tool_support",
     "../build:default_exe_manifest_win",
@@ -71,9 +63,7 @@
 
 if (!crashpad_is_fuchsia) {
   crashpad_executable("generate_dump") {
-    sources = [
-      "generate_dump.cc",
-    ]
+    sources = [ "generate_dump.cc" ]
 
     deps = [
       ":tool_support",
@@ -89,9 +79,7 @@
       # This would be better as a config so that it could be shared with
       # exception_port_tool, but configs can’t alter “inputs”.
       # https://crbug.com/781858.
-      inputs = [
-        "mac/sectaskaccess_info.plist",
-      ]
+      inputs = [ "mac/sectaskaccess_info.plist" ]
       ldflags = [
         "-sectcreate",
         "__TEXT",
@@ -108,9 +96,7 @@
 
 if (crashpad_is_mac || crashpad_is_fuchsia) {
   crashpad_executable("run_with_crashpad") {
-    sources = [
-      "run_with_crashpad.cc",
-    ]
+    sources = [ "run_with_crashpad.cc" ]
 
     deps = [
       ":tool_support",
@@ -124,9 +110,7 @@
 
 if (crashpad_is_mac) {
   crashpad_executable("catch_exception_tool") {
-    sources = [
-      "mac/catch_exception_tool.cc",
-    ]
+    sources = [ "mac/catch_exception_tool.cc" ]
 
     deps = [
       ":tool_support",
@@ -137,15 +121,11 @@
   }
 
   crashpad_executable("exception_port_tool") {
-    sources = [
-      "mac/exception_port_tool.cc",
-    ]
+    sources = [ "mac/exception_port_tool.cc" ]
 
     # This would be better as a config so that it could be shared with
     # generate_dump, but configs can’t alter “inputs”. https://crbug.com/781858.
-    inputs = [
-      "mac/sectaskaccess_info.plist",
-    ]
+    inputs = [ "mac/sectaskaccess_info.plist" ]
     ldflags = [
       "-sectcreate",
       "__TEXT",
@@ -162,9 +142,7 @@
   }
 
   crashpad_executable("on_demand_service_tool") {
-    sources = [
-      "mac/on_demand_service_tool.mm",
-    ]
+    sources = [ "mac/on_demand_service_tool.mm" ]
 
     libs = [
       "CoreFoundation.framework",
diff --git a/third_party/crashpad/crashpad/util/BUILD.gn b/third_party/crashpad/crashpad/util/BUILD.gn
index 11d48445..f886d64 100644
--- a/third_party/crashpad/crashpad/util/BUILD.gn
+++ b/third_party/crashpad/crashpad/util/BUILD.gn
@@ -466,9 +466,7 @@
     include_dirs = [ "$root_gen_dir/third_party/crashpad/crashpad" ]
   }
 
-  public_deps = [
-    "../compat",
-  ]
+  public_deps = [ "../compat" ]
 
   deps += [
     "../third_party/mini_chromium:base",
@@ -519,9 +517,7 @@
 if (!crashpad_is_android) {
   crashpad_executable("http_transport_test_server") {
     testonly = true
-    sources = [
-      "net/http_transport_test_server.cc",
-    ]
+    sources = [ "net/http_transport_test_server.cc" ]
 
     deps = [
       ":util",
@@ -693,9 +689,7 @@
     }
   }
 
-  data = [
-    "net/testdata/",
-  ]
+  data = [ "net/testdata/" ]
 
   deps = [
     ":util",
@@ -713,9 +707,7 @@
   }
 
   if (!crashpad_is_android) {
-    data_deps = [
-      ":http_transport_test_server",
-    ]
+    data_deps = [ ":http_transport_test_server" ]
 
     if (crashpad_use_boringssl_for_http_transport_socket) {
       defines = [ "CRASHPAD_USE_BORINGSSL" ]
@@ -742,25 +734,17 @@
 if (crashpad_is_win) {
   crashpad_executable("crashpad_util_test_process_info_test_child") {
     testonly = true
-    sources = [
-      "win/process_info_test_child.cc",
-    ]
+    sources = [ "win/process_info_test_child.cc" ]
   }
 
   crashpad_executable("crashpad_util_test_safe_terminate_process_test_child") {
     testonly = true
-    sources = [
-      "win/safe_terminate_process_test_child.cc",
-    ]
+    sources = [ "win/safe_terminate_process_test_child.cc" ]
   }
 
   crashpad_loadable_module("crashpad_util_test_loader_lock_test") {
     testonly = true
-    sources = [
-      "win/loader_lock_test_dll.cc",
-    ]
-    deps = [
-      ":util",
-    ]
+    sources = [ "win/loader_lock_test_dll.cc" ]
+    deps = [ ":util" ]
   }
 }
diff --git a/third_party/subresource-filter-ruleset/README.chromium b/third_party/subresource-filter-ruleset/README.chromium
index a52ea78..9bfa1449 100644
--- a/third_party/subresource-filter-ruleset/README.chromium
+++ b/third_party/subresource-filter-ruleset/README.chromium
@@ -1,6 +1,6 @@
 Name: EasyList
 URL: https://easylist.to/easylist/easylist.txt
-Version: 201912031154
+Version: 202001141555
 License: Creative Commons Attribution-ShareAlike 3.0 Unported
 License File: NOT_SHIPPED
 Security Critical: no
diff --git a/third_party/subresource-filter-ruleset/data/UnindexedRules.sha1 b/third_party/subresource-filter-ruleset/data/UnindexedRules.sha1
index 1071fd9..3d7243f52 100644
--- a/third_party/subresource-filter-ruleset/data/UnindexedRules.sha1
+++ b/third_party/subresource-filter-ruleset/data/UnindexedRules.sha1
@@ -1 +1 @@
-86cac81f42914dc06e0c6966e3b9cc663bcdbdba
\ No newline at end of file
+cf27d9fd707f90437b86cbb0b29b4dba1e7fe87d
\ No newline at end of file
diff --git a/tools/clang/blink_gc_plugin/BlinkGCPlugin.cpp b/tools/clang/blink_gc_plugin/BlinkGCPlugin.cpp
index cc982a6..779b06e 100644
--- a/tools/clang/blink_gc_plugin/BlinkGCPlugin.cpp
+++ b/tools/clang/blink_gc_plugin/BlinkGCPlugin.cpp
@@ -33,6 +33,8 @@
     for (const auto& arg : args) {
       if (arg == "dump-graph") {
         options_.dump_graph = true;
+      } else if (arg == "no-members-in-stack-allocated") {
+        options_.no_members_in_stack_allocated = true;
       } else if (arg == "enable-weak-members-in-unmanaged-classes") {
         options_.enable_weak_members_in_unmanaged_classes = true;
       } else if (arg == "no-gc-finalized" || arg == "warn-unneeded-finalizer") {
diff --git a/tools/clang/blink_gc_plugin/BlinkGCPluginOptions.h b/tools/clang/blink_gc_plugin/BlinkGCPluginOptions.h
index e05100bc..bb2e642 100644
--- a/tools/clang/blink_gc_plugin/BlinkGCPluginOptions.h
+++ b/tools/clang/blink_gc_plugin/BlinkGCPluginOptions.h
@@ -12,6 +12,9 @@
 struct BlinkGCPluginOptions {
   bool dump_graph = false;
 
+  // If |true|, disallow Member types in stack allocated classes.
+  bool no_members_in_stack_allocated = false;
+
   // Member<T> fields are only permitted in managed classes,
   // something CheckFieldsVisitor verifies, issuing errors if
   // found in unmanaged classes. WeakMember<T> should be treated
diff --git a/tools/clang/blink_gc_plugin/CheckFieldsVisitor.cpp b/tools/clang/blink_gc_plugin/CheckFieldsVisitor.cpp
index 6e5f1b58..cc5fdf34 100644
--- a/tools/clang/blink_gc_plugin/CheckFieldsVisitor.cpp
+++ b/tools/clang/blink_gc_plugin/CheckFieldsVisitor.cpp
@@ -78,6 +78,19 @@
     return;
   }
 
+  if (options_.no_members_in_stack_allocated) {
+    // Members/WeakMembers are prohibited if the host is stack allocated, but
+    // heap collections with Members are okay.
+    if (stack_allocated_host_ && Parent() &&
+        (Parent()->IsMember() || Parent()->IsWeakMember())) {
+      if (!GrandParent() || !GrandParent()->IsCollection()) {
+        invalid_fields_.push_back(
+            std::make_pair(current_, kMemberInStackAllocated));
+        return;
+      }
+    }
+  }
+
   // If in a stack allocated context, be fairly insistent that T in Member<T>
   // is GC allocated, as stack allocated objects do not have a trace()
   // that separately verifies the validity of Member<T>.
@@ -88,25 +101,24 @@
   //
   // (Note: Member<>'s constructor will at run-time verify that the
   // pointer it wraps is indeed heap allocated.)
-  if (stack_allocated_host_ && Parent() && Parent()->IsMember() &&
+  if (stack_allocated_host_ && Parent() &&
+      (Parent()->IsMember() || Parent()->IsWeakMember()) &&
       edge->value()->HasDefinition() && !edge->value()->IsGCAllocated()) {
-    invalid_fields_.push_back(std::make_pair(current_,
-                                             kMemberToGCUnmanaged));
+    invalid_fields_.push_back(std::make_pair(current_, kMemberToGCUnmanaged));
     return;
   }
 
   if (!Parent() || !edge->value()->IsGCAllocated())
     return;
 
-  // Disallow  unique_ptr<T>, RefPtr<T> and T* to stack-allocated types.
-  if (Parent()->IsUniquePtr() ||
-      Parent()->IsRefPtr() ||
-      (stack_allocated_host_ && Parent()->IsRawPtr())) {
+  // Disallow unique_ptr<T>, RefPtr<T>.
+  if (Parent()->IsUniquePtr() || Parent()->IsRefPtr()) {
     invalid_fields_.push_back(std::make_pair(
         current_, InvalidSmartPtr(Parent())));
     return;
   }
-  if (Parent()->IsRawPtr()) {
+  if (Parent()->IsRawPtr() &&
+      !(stack_allocated_host_ && options_.no_members_in_stack_allocated)) {
     RawPtr* rawPtr = static_cast<RawPtr*>(Parent());
     Error error = rawPtr->HasReferenceType() ?
         kReferencePtrToGCManaged : kRawPtrToGCManaged;
@@ -120,12 +132,6 @@
 }
 
 CheckFieldsVisitor::Error CheckFieldsVisitor::InvalidSmartPtr(Edge* ptr) {
-  if (ptr->IsRawPtr()) {
-    if (static_cast<RawPtr*>(ptr)->HasReferenceType())
-      return kReferencePtrToGCManaged;
-    else
-      return kRawPtrToGCManaged;
-  }
   if (ptr->IsRefPtr())
     return kRefPtrToGCManaged;
   if (ptr->IsUniquePtr())
diff --git a/tools/clang/blink_gc_plugin/CheckFieldsVisitor.h b/tools/clang/blink_gc_plugin/CheckFieldsVisitor.h
index b7b68c2f..d6d2ba0 100644
--- a/tools/clang/blink_gc_plugin/CheckFieldsVisitor.h
+++ b/tools/clang/blink_gc_plugin/CheckFieldsVisitor.h
@@ -30,6 +30,7 @@
     kPtrFromHeapToStack,
     kGCDerivedPartObject,
     kIteratorToGCManaged,
+    kMemberInStackAllocated,
   };
 
   using Errors = std::vector<std::pair<FieldPoint*, Error>>;
diff --git a/tools/clang/blink_gc_plugin/DiagnosticsReporter.cpp b/tools/clang/blink_gc_plugin/DiagnosticsReporter.cpp
index a69772c..068a9718 100644
--- a/tools/clang/blink_gc_plugin/DiagnosticsReporter.cpp
+++ b/tools/clang/blink_gc_plugin/DiagnosticsReporter.cpp
@@ -130,6 +130,10 @@
     "[blink-gc] The stack allocated class %0 provides an unnecessary "
     "trace method:";
 
+const char kMemberInStackAllocated[] =
+    "[blink-gc] Member field %0 in stack allocated class declared here (use "
+    "raw pointer or reference instead):";
+
 const char kUniquePtrUsedWithGC[] =
     "[blink-gc] Disallowed use of %0 found; %1 is a garbage-collected type. "
     "std::unique_ptr cannot hold garbage-collected objects.";
@@ -203,6 +207,8 @@
       getErrorLevel(), kIteratorToGCManagedCollectionNote);
   diag_trace_method_of_stack_allocated_parent_ = diagnostic_.getCustomDiagID(
       getErrorLevel(), kTraceMethodOfStackAllocatedParentNote);
+  diag_member_in_stack_allocated_class_ =
+      diagnostic_.getCustomDiagID(getErrorLevel(), kMemberInStackAllocated);
 
   // Register note messages.
   diag_base_requires_tracing_note_ = diagnostic_.getCustomDiagID(
@@ -334,6 +340,8 @@
       note = diag_part_object_to_gc_derived_class_note_;
     } else if (error.second == CheckFieldsVisitor::kIteratorToGCManaged) {
       note = diag_iterator_to_gc_managed_collection_note_;
+    } else if (error.second == CheckFieldsVisitor::kMemberInStackAllocated) {
+      note = diag_member_in_stack_allocated_class_;
     } else {
       llvm_unreachable("Unknown field error.");
     }
diff --git a/tools/clang/blink_gc_plugin/DiagnosticsReporter.h b/tools/clang/blink_gc_plugin/DiagnosticsReporter.h
index 05f5587..627e4b1 100644
--- a/tools/clang/blink_gc_plugin/DiagnosticsReporter.h
+++ b/tools/clang/blink_gc_plugin/DiagnosticsReporter.h
@@ -139,6 +139,7 @@
   unsigned diag_manual_dispatch_method_note_;
   unsigned diag_iterator_to_gc_managed_collection_note_;
   unsigned diag_trace_method_of_stack_allocated_parent_;
+  unsigned diag_member_in_stack_allocated_class_;
 
   unsigned diag_unique_ptr_used_with_gc_;
   unsigned diag_optional_used_with_gc_;
diff --git a/tools/clang/blink_gc_plugin/Edge.h b/tools/clang/blink_gc_plugin/Edge.h
index c186f43..034c6ea 100644
--- a/tools/clang/blink_gc_plugin/Edge.h
+++ b/tools/clang/blink_gc_plugin/Edge.h
@@ -63,6 +63,9 @@
   typedef std::deque<Edge*> Context;
   Context& context() { return context_; }
   Edge* Parent() { return context_.empty() ? 0 : context_.front(); }
+  Edge* GrandParent() {
+    return Parent() ? (context_.size() > 1 ? context_[1] : nullptr) : nullptr;
+  }
   void Enter(Edge* e) { return context_.push_front(e); }
   void Leave() { context_.pop_front(); }
 
diff --git a/tools/clang/blink_gc_plugin/tests/member_in_offheap_class.h b/tools/clang/blink_gc_plugin/tests/member_in_offheap_class.h
index f311d0f..0dba6724 100644
--- a/tools/clang/blink_gc_plugin/tests/member_in_offheap_class.h
+++ b/tools/clang/blink_gc_plugin/tests/member_in_offheap_class.h
@@ -23,8 +23,7 @@
 class StackObject {
     STACK_ALLOCATED();
 private:
-    Member<HeapObject> m_obj; // OK
-    Member<OffHeapObject> m_memberOff; // NOT OK
+    HeapObject* m_obj; // OK
     HeapVector<Member<OffHeapObject>> m_heapVectorMemberOff; // NOT OK
 };
 
diff --git a/tools/clang/blink_gc_plugin/tests/member_in_offheap_class.txt b/tools/clang/blink_gc_plugin/tests/member_in_offheap_class.txt
index 090778a8..e9ab274d 100644
--- a/tools/clang/blink_gc_plugin/tests/member_in_offheap_class.txt
+++ b/tools/clang/blink_gc_plugin/tests/member_in_offheap_class.txt
@@ -11,10 +11,10 @@
 ./member_in_offheap_class.h:23:1: warning: [blink-gc] Class 'StackObject' contains invalid fields.
 class StackObject {
 ^
-./member_in_offheap_class.h:27:5: note: [blink-gc] Member field 'm_memberOff' to non-GC managed class declared here:
-    Member<OffHeapObject> m_memberOff; // NOT OK
+./member_in_offheap_class.h:26:5: note: [blink-gc] Raw pointer field 'm_obj' to a GC managed class declared here:
+    HeapObject* m_obj; // OK
     ^
-./member_in_offheap_class.h:28:5: note: [blink-gc] Member field 'm_heapVectorMemberOff' to non-GC managed class declared here:
+./member_in_offheap_class.h:27:5: note: [blink-gc] Member field 'm_heapVectorMemberOff' to non-GC managed class declared here:
     HeapVector<Member<OffHeapObject>> m_heapVectorMemberOff; // NOT OK
     ^
 2 warnings generated.
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 70c327b..de0acdba 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -12544,6 +12544,7 @@
   <int value="47" label="CONTAINER_CONFIGURATION_FAILED"/>
   <int value="48" label="LOAD_COMPONENT_UPDATE_IN_PROGRESS"/>
   <int value="49" label="NEVER_FINISHED"/>
+  <int value="50" label="CONTAINER_SETUP_FAILED"/>
 </enum>
 
 <enum name="CrostiniSettingsEvent">
@@ -19212,6 +19213,7 @@
   <int value="661" label="DeviceLoginScreenAccessibilityShortcutsEnabled"/>
   <int value="662" label="LocalDiscoveryEnabled"/>
   <int value="663" label="ChromeVariations"/>
+  <int value="664" label="PrintingAPIExtensionsWhitelist"/>
 </enum>
 
 <enum name="EnterprisePolicyInvalidations">
@@ -26034,6 +26036,8 @@
   <int value="3137" label="CSPWithBetterThanReasonableRestrictions"/>
   <int value="3138" label="CSPROWithBetterThanReasonableRestrictions"/>
   <int value="3139" label="MeasureMemory"/>
+  <int value="3140" label="V8Animation_ReplaceState_AttributeGetter"/>
+  <int value="3141" label="V8Animation_Persist_Method"/>
 </enum>
 
 <enum name="FeaturePolicyAllowlistType">
@@ -63839,6 +63843,10 @@
 </enum>
 
 <enum name="UnifiedConsentSyncAndGoogleServicesSettings">
+  <obsolete>
+    Deprecated 01/2020 because only make searches and browsing better is
+    recorded as a Boolean.
+  </obsolete>
   <int value="0" label="None of the services are enabled"/>
   <int value="1" label="(Obsolete) 'Sync and all Google services' is enabled"/>
   <int value="2" label="(Obsolete) 'Activity and interactions' is enabled"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml
index 1cf2c49..d24c5bb 100644
--- a/tools/metrics/histograms/histograms.xml
+++ b/tools/metrics/histograms/histograms.xml
@@ -4518,6 +4518,17 @@
   </summary>
 </histogram>
 
+<histogram name="Android.WebView.Startup.DataDirLockAttempts" units="attempts"
+    expires_after="2020-06-30">
+  <owner>torne@chromium.org</owner>
+  <owner>src/android_webview/OWNERS</owner>
+  <summary>
+    How many attempts it took to acquire the WebView data directory lock. A
+    value of 0 indicates that we reached the max retry count and failed to
+    acquire the lock successfully at all.
+  </summary>
+</histogram>
+
 <histogram name="Android.WebView.SupportLibrary.ClientIsCompat"
     enum="WebViewClientTypeEnum" expires_after="2020-05-05">
   <owner>ntfschr@chromium.org</owner>
@@ -17234,17 +17245,30 @@
 </histogram>
 
 <histogram name="Blink.MemoryCache.RevalidationPolicy"
-    enum="RevalidationPolicy" expires_after="M81">
+    enum="RevalidationPolicy" expires_after="M84">
   <owner>hiroshige@chromium.org</owner>
+  <owner>loading-dev@chromium.org</owner>
   <summary>
     RevalidationPolicy used for non-preloading requests for each resource type.
     https://crbug.com/579496
   </summary>
 </histogram>
 
-<histogram name="Blink.MemoryCache.RevalidationPolicy.Dead"
-    enum="RevalidationPolicy" expires_after="M81">
+<histogram name="Blink.MemoryCache.RevalidationPolicy.AsyncScript"
+    enum="RevalidationPolicy" expires_after="M84">
   <owner>hiroshige@chromium.org</owner>
+  <owner>lizeb@chromium.org</owner>
+  <owner>loading-dev@chromium.org</owner>
+  <summary>
+    RevalidationPolicy used for non-preloading requests of async and defer
+    scripts. https://crbug.com/1043679
+  </summary>
+</histogram>
+
+<histogram name="Blink.MemoryCache.RevalidationPolicy.Dead"
+    enum="RevalidationPolicy" expires_after="M84">
+  <owner>hiroshige@chromium.org</owner>
+  <owner>loading-dev@chromium.org</owner>
   <summary>
     RevalidationPolicy used for requests that hit Resource only referenced from
     MemoryCache for each resource type. https://crbug.com/579496 Requests
@@ -17254,8 +17278,9 @@
 </histogram>
 
 <histogram name="Blink.MemoryCache.RevalidationPolicy.Preload"
-    enum="RevalidationPolicy" expires_after="M81">
+    enum="RevalidationPolicy" expires_after="M84">
   <owner>hiroshige@chromium.org</owner>
+  <owner>loading-dev@chromium.org</owner>
   <summary>
     RevalidationPolicy used for preloading requests for each resource type.
     https://crbug.com/579496
@@ -30110,6 +30135,17 @@
   </summary>
 </histogram>
 
+<histogram name="Cryptohome.FreeDiskSpaceTotalFreedInMb" units="MiB"
+    expires_after="M87">
+  <owner>vsavu@chromium.org</owner>
+  <owner>weifangsun@chromium.org</owner>
+  <summary>
+    In low disk space scenarios, Cryptohome performs a lot of disk space
+    operations to erase data. This is the amount of space that was released by
+    the automatic cleanup.
+  </summary>
+</histogram>
+
 <histogram name="Cryptohome.FreeDiskSpaceTotalTime" units="ms"
     expires_after="M81">
   <owner>slangley@chromium.org</owner>
@@ -30292,6 +30328,18 @@
   </summary>
 </histogram>
 
+<histogram name="Cryptohome.TimeBetweenFreeDiskSpace" units="s"
+    expires_after="M87">
+  <owner>vsavu@chromium.org</owner>
+  <owner>slangley@chromium.org</owner>
+  <owner>weifangsun@chromium.org</owner>
+  <summary>
+    The amount of time (s) between disk cleanup runs. If there is sufficient
+    disk space, nothing is reported. The first cleanup run after boot is not
+    reported.
+  </summary>
+</histogram>
+
 <histogram name="Cryptohome.TimeToCompleteDircryptoMigration" units="ms"
     expires_after="M81">
   <owner>dspaid@chromium.org</owner>
@@ -162128,6 +162176,18 @@
   </summary>
 </histogram>
 
+<histogram name="UnifiedConsent.MakeSearchesAndBrowsingBetter.OnStartup"
+    enum="BooleanEnabled" expires_after="never">
+<!-- expires-never: Core metric for monitoring user settings for making searches and browsing better. -->
+
+  <owner>msarda@chromium.org</owner>
+  <owner>droger@chromium.org</owner>
+  <summary>
+    State of the user settings for making searches and browsing better, recorded
+    at startup.
+  </summary>
+</histogram>
+
 <histogram name="UnifiedConsent.RevokeReason" enum="UnifiedConsentRevokeReason"
     expires_after="2018-11-27">
   <obsolete>
@@ -162144,9 +162204,13 @@
 </histogram>
 
 <histogram name="UnifiedConsent.SyncAndGoogleServicesSettings"
-    enum="UnifiedConsentSyncAndGoogleServicesSettings" expires_after="never">
-<!-- expires-never: Core metric for monitoring user settings for Sync and Google services. -->
-
+    enum="UnifiedConsentSyncAndGoogleServicesSettings"
+    expires_after="2020-01-20">
+  <obsolete>
+    Renamed as UnifiedConsent.MakeSearchesAndBrowsingBetter.OnStartup in 01/2020
+    because today the UnifiedConsent service only manages the Make Searches and
+    Browsing better feature.
+  </obsolete>
   <owner>msarda@chromium.org</owner>
   <owner>droger@chromium.org</owner>
   <summary>
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config
index 3bea2a9..1e4c9c1b 100644
--- a/tools/perf/expectations.config
+++ b/tools/perf/expectations.config
@@ -219,6 +219,7 @@
 crbug.com/755556 [ mac ] rendering.desktop/mix_blend_mode_animation_hue [ Skip ]
 crbug.com/1017244 [ desktop ] rendering.desktop/youtube_2018 [ Skip ]
 crbug.com/1017244 [ desktop ] rendering.desktop/youtube_pinch_2018 [ Skip ]
+crbug.com/1044962 [ win ] rendering.desktop/camera_to_webgl [ Skip ]
 
 # Benchmark: rendering.mobile
 crbug.com/785485 [ android-webview ] rendering.mobile/kevs_3d [ Skip ]
@@ -299,6 +300,7 @@
 crbug.com/1023366 [ desktop ] system_health.common_desktop/browse:media:youtube:2019 [ Skip ]
 crbug.com/1042632 [ win ] system_health.common_desktop/load:tools:gmail:2019 [ Skip ]
 
+
 # Benchmark: system_health.common_mobile
 crbug.com/1013317 [ android ] system_health.common_mobile/load:news:nytimes [ Skip ]
 crbug.com/1013317 [ android ] system_health.common_mobile/background:news:nytimes [ Skip ]
@@ -323,6 +325,8 @@
 crbug.com/1036141 [ android-webview ] system_health.common_mobile/browse:shopping:lazada:2019 [ Skip ]
 crbug.com/1036143 [ android-pixel-2 ] system_health.common_mobile/browse:chrome:omnibox:2019 [ Skip ]
 crbug.com/1039801 [ android-webview ] system_health.common_mobile/browse:social:pinterest_infinite_scroll:2019 [ Skip ]
+crbug.com/1044953 [ android-go android-webview ] system_health.common_mobile/load:games:bubbles [ Skip ]
+crbug.com/1044956 [ android-pixel-2 ] system_health.common_mobile/background:tools:gmail:2019 [ Skip ]
 
 # Benchmark: system_health.memory_desktop
 crbug.com/984599 [ linux ] system_health.memory_desktop/long_running:tools:gmail-foreground [ Skip ]
@@ -397,6 +401,8 @@
 crbug.com/1036143 [ android-pixel-2 ] system_health.memory_mobile/browse:chrome:omnibox:2019 [ Skip ]
 crbug.com/1036141 [ android-webview ] system_health.memory_mobile/browse:shopping:lazada:2019 [ Skip ]
 crbug.com/1039801 [ android-webview ] system_health.memory_mobile/browse:social:pinterest_infinite_scroll:2019 [ Skip ]
+crbug.com/1044953 [ android-go android-webview ] system_health.memory_mobile/load:games:bubbles [ Skip ]
+crbug.com/1044956 [ android-pixel-2 ] system_health.memory_mobile/background:tools:gmail:2019 [ Skip ]
 
 # Benchmark: tab_switching.typical_25
 crbug.com/747026 [ mac ] tab_switching.typical_25/multitab:misc:typical24 [ Skip ]
diff --git a/tools/traffic_annotation/summary/annotations.xml b/tools/traffic_annotation/summary/annotations.xml
index 6e4b0fb..dec140b 100644
--- a/tools/traffic_annotation/summary/annotations.xml
+++ b/tools/traffic_annotation/summary/annotations.xml
@@ -30,7 +30,7 @@
  <item id="bluetooth_socket" hash_code="94099818" type="0" content_hash_code="30932349" os_list="linux,windows" file_path="device/bluetooth/bluetooth_socket_net.cc"/>
  <item id="brandcode_config" hash_code="109679553" type="0" content_hash_code="128843792" os_list="linux,windows" file_path="chrome/browser/profile_resetter/brandcode_config_fetcher.cc"/>
  <item id="browser_switcher_ieem_sitelist" hash_code="97159948" type="0" content_hash_code="129062966" os_list="linux,windows" file_path="chrome/browser/browser_switcher/browser_switcher_service.cc"/>
- <item id="captive_portal_service" hash_code="88754904" type="0" content_hash_code="70737580" os_list="linux,windows" file_path="chrome/browser/captive_portal/captive_portal_service.cc"/>
+ <item id="captive_portal_service" hash_code="88754904" type="0" content_hash_code="70737580" os_list="linux,windows" file_path="components/captive_portal/content/captive_portal_service.cc"/>
  <item id="cast_channel_send" hash_code="103172229" type="0" deprecated="2018-08-23" content_hash_code="33946302" file_path=""/>
  <item id="cast_keep_alive_delegate" hash_code="134755844" type="0" deprecated="2018-08-23" content_hash_code="66118796" file_path=""/>
  <item id="cast_message_handler" hash_code="87558948" type="0" deprecated="2018-08-23" content_hash_code="49684899" file_path=""/>
@@ -136,6 +136,7 @@
  <item id="history_ui_favicon_request_handler_get_favicon" hash_code="17562717" type="0" content_hash_code="64054629" os_list="linux,windows" file_path="components/favicon/core/history_ui_favicon_request_handler_impl.cc"/>
  <item id="http_server_error_response" hash_code="32197336" type="0" content_hash_code="61082230" os_list="linux,windows" file_path="net/server/http_server.cc"/>
  <item id="https_server_previews_navigation" hash_code="35725390" type="0" content_hash_code="84423109" os_list="linux,windows" file_path="chrome/browser/previews/previews_lite_page_redirect_serving_url_loader.cc"/>
+ <item id="ice_config_fetcher" hash_code="137093034" type="0" content_hash_code="60051202" os_list="linux,windows" file_path="chrome/browser/sharing/webrtc/ice_config_fetcher.cc"/>
  <item id="icon_cacher" hash_code="103133150" type="0" content_hash_code="116368348" os_list="linux,windows" file_path="components/ntp_tiles/icon_cacher_impl.cc"/>
  <item id="icon_catcher_get_large_icon" hash_code="44494884" type="0" content_hash_code="98262037" os_list="linux,windows" file_path="components/ntp_tiles/icon_cacher_impl.cc"/>
  <item id="image_annotation" hash_code="107881858" type="0" content_hash_code="96203979" os_list="linux,windows" file_path="services/image_annotation/annotator.cc"/>
diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn
index db608373..0e081da 100644
--- a/ui/base/BUILD.gn
+++ b/ui/base/BUILD.gn
@@ -1195,6 +1195,17 @@
   }
 }
 
+if (is_linux) {
+  # This source set defines linux wm role names and must not have any external
+  # dependencies and be kept as minimal as possible.
+  source_set("wm_role_names") {
+    sources = [
+      "wm_role_names_linux.cc",
+      "wm_role_names_linux.h",
+    ]
+  }
+}
+
 # This target is added as a dependency of browser interactive_ui_tests. It must
 # be source_set, otherwise the linker will drop the tests as dead code.
 source_set("base_interactive_ui_tests") {
diff --git a/ui/base/wm_role_names_linux.cc b/ui/base/wm_role_names_linux.cc
new file mode 100644
index 0000000..e3a0d6a
--- /dev/null
+++ b/ui/base/wm_role_names_linux.cc
@@ -0,0 +1,11 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ui/base/wm_role_names_linux.h"
+
+namespace ui {
+
+const char kStatusIconWmRoleName[] = "status-icon";
+
+}  // namespace ui
diff --git a/ui/base/wm_role_names_linux.h b/ui/base/wm_role_names_linux.h
new file mode 100644
index 0000000..a421e81
--- /dev/null
+++ b/ui/base/wm_role_names_linux.h
@@ -0,0 +1,16 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_BASE_WM_ROLE_NAMES_LINUX_H_
+#define UI_BASE_WM_ROLE_NAMES_LINUX_H_
+
+namespace ui {
+
+// Return the status-icon wm_role_name. Only used to construct status-icon
+// windows for x11.
+extern const char kStatusIconWmRoleName[];
+
+}  // namespace ui
+
+#endif  // UI_BASE_WM_ROLE_NAMES_LINUX_H_
diff --git a/ui/base/x/BUILD.gn b/ui/base/x/BUILD.gn
index 92c359e..13bde44 100644
--- a/ui/base/x/BUILD.gn
+++ b/ui/base/x/BUILD.gn
@@ -69,6 +69,7 @@
     "//net",
     "//skia",
     "//ui/base:hit_test",
+    "//ui/base:wm_role_names",
     "//ui/base/clipboard:clipboard_types",
     "//ui/display/util",
     "//ui/events",
diff --git a/ui/base/x/x11_window.cc b/ui/base/x/x11_window.cc
index 87420eaa..a87546fd 100644
--- a/ui/base/x/x11_window.cc
+++ b/ui/base/x/x11_window.cc
@@ -13,6 +13,7 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "third_party/skia/include/core/SkRegion.h"
 #include "ui/base/hit_test_x11.h"
+#include "ui/base/wm_role_names_linux.h"
 #include "ui/base/x/x11_pointer_grab.h"
 #include "ui/base/x/x11_util.h"
 #include "ui/base/x/x11_util_internal.h"
@@ -205,8 +206,17 @@
       enable_transparent_visuals = config.type == WindowType::kDrag;
   }
 
+  int visual_id;
+  if (config.wm_role_name == kStatusIconWmRoleName) {
+    std::string atom_name =
+        "_NET_SYSTEM_TRAY_S" + base::NumberToString(DefaultScreen(xdisplay_));
+    XID manager =
+        XGetSelectionOwner(xdisplay_, gfx::GetAtom(atom_name.c_str()));
+    if (ui::GetIntProperty(manager, "_NET_SYSTEM_TRAY_VISUAL", &visual_id))
+      visual_id_ = visual_id;
+  }
+
   Visual* visual = CopyFromParent;
-  SetVisualId(config.visual_id);
   int depth = CopyFromParent;
   Colormap colormap = CopyFromParent;
   ui::XVisualManager* visual_manager = ui::XVisualManager::GetInstance();
@@ -1603,14 +1613,6 @@
   has_pointer_barriers_ = false;
 }
 
-void XWindow::SetVisualId(base::Optional<int> visual_id) {
-  if (!visual_id.has_value())
-    return;
-
-  DCHECK_GE(visual_id.value(), 0);
-  visual_id_ = visual_id.value();
-}
-
 void XWindow::UpdateWindowRegion(XRegion* xregion) {
   // If a custom window shape was supplied then apply it.
   if (use_custom_shape()) {
diff --git a/ui/base/x/x11_window.h b/ui/base/x/x11_window.h
index 91a828ea..ff1bb279a 100644
--- a/ui/base/x/x11_window.h
+++ b/ui/base/x/x11_window.h
@@ -88,7 +88,6 @@
     std::string wm_class_name;
     std::string wm_class_class;
     std::string wm_role_name;
-    base::Optional<int> visual_id;
   };
 
   XWindow();
@@ -221,8 +220,6 @@
 
   void UnconfineCursor();
 
-  void SetVisualId(base::Optional<int> visual_id);
-
   void UpdateWindowRegion(XRegion* xregion);
 
   void NotifyBoundsChanged(const gfx::Rect& new_bounds_in_px);
diff --git a/ui/file_manager/file_manager/foreground/elements/files_safe_media_webview_content.js b/ui/file_manager/file_manager/foreground/elements/files_safe_media_webview_content.js
index f13a4e7..d7165af 100644
--- a/ui/file_manager/file_manager/foreground/elements/files_safe_media_webview_content.js
+++ b/ui/file_manager/file_manager/foreground/elements/files_safe_media_webview_content.js
@@ -36,15 +36,20 @@
         break;
       case 'image':
         content.remove();
-        content.onload = (e) => contentChanged(e.target.src);
-        content.src = event.data.src;
-        content.decode()
-            .then(() => {
-              document.body.appendChild(content);
-            })
-            .catch(() => {
-              contentDecodeFailed();
-            });
+        content.src = '';
+
+        const image = new Image();
+        image.onload = (e) => {
+          contentChanged(e.target.src);
+          document.body.appendChild(content);
+          content.src = e.target.src;
+        };
+
+        image.onerror = (e) => {
+          contentDecodeFailed();
+        };
+
+        image.src = event.data.src;
         break;
       default:
         content.onload = (e) => contentChanged(e.target.src);
diff --git a/ui/file_manager/file_manager/foreground/js/file_manager_commands.js b/ui/file_manager/file_manager/foreground/js/file_manager_commands.js
index d03ca4d..dfb1d0b 100644
--- a/ui/file_manager/file_manager/foreground/js/file_manager_commands.js
+++ b/ui/file_manager/file_manager/foreground/js/file_manager_commands.js
@@ -1502,7 +1502,7 @@
       return;
     }
 
-    event.canExecute = entries.length === 1;
+    event.canExecute = entries.length >= 1;
     event.command.setHidden(false);
   }
 };
diff --git a/ui/file_manager/integration_tests/file_manager/quick_view.js b/ui/file_manager/integration_tests/file_manager/quick_view.js
index c2e818bb..fa404b4 100644
--- a/ui/file_manager/integration_tests/file_manager/quick_view.js
+++ b/ui/file_manager/integration_tests/file_manager/quick_view.js
@@ -209,6 +209,42 @@
   };
 
   /**
+   * Tests that Quick View opens via the context menu with a single selection.
+   */
+  testcase.openQuickViewViaContextMenuSingleSelection = async () => {
+    // Open Files app on Downloads containing ENTRIES.hello.
+    const appId =
+        await setupAndWaitUntilReady(RootPath.DOWNLOADS, [ENTRIES.hello], []);
+
+    // Right-click the file in the file-list.
+    const query = '#file-list [file-name="hello.txt"]';
+    chrome.test.assertTrue(!!await remoteCall.callRemoteTestUtil(
+        'fakeMouseRightClick', appId, [query]));
+
+    // Wait because WebUI Menu ignores the following click if it happens in
+    // <200ms from the previous click.
+    await wait(300);
+
+    // Click the file-list context menu "Get info" command.
+    const getInfoMenuItem = '#file-context-menu:not([hidden]) ' +
+        ' [command="#get-info"]:not([hidden])';
+    await remoteCall.simulateUiClick(appId, getInfoMenuItem);
+
+    // Check: the Quick View dialog should be shown.
+    const caller = getCaller();
+    await repeatUntil(async () => {
+      const query = ['#quick-view', '#dialog[open]'];
+      const elements = await remoteCall.callRemoteTestUtil(
+          'deepQueryAllElements', appId, [query, ['display']]);
+      const haveElements = Array.isArray(elements) && elements.length !== 0;
+      if (!haveElements || elements[0].styles.display !== 'block') {
+        return pending(caller, 'Waiting for Quick View to open.');
+      }
+      return true;
+    });
+  };
+
+  /**
    * Tests opening then closing Quick View on a local downloads file.
    */
   testcase.closeQuickView = async () => {
diff --git a/ui/platform_window/platform_window_init_properties.h b/ui/platform_window/platform_window_init_properties.h
index 3e16eae..d1a5cc0 100644
--- a/ui/platform_window/platform_window_init_properties.h
+++ b/ui/platform_window/platform_window_init_properties.h
@@ -94,9 +94,6 @@
   std::string wm_class_name;
   std::string wm_class_class;
 
-  // Stores visual id for the system tray in X11.
-  base::Optional<int> x_visual_id;
-
   X11ExtensionDelegate* x11_extension_delegate = nullptr;
 #endif
 };
diff --git a/ui/platform_window/x11/x11_window.cc b/ui/platform_window/x11/x11_window.cc
index 10220f6..566b9a8 100644
--- a/ui/platform_window/x11/x11_window.cc
+++ b/ui/platform_window/x11/x11_window.cc
@@ -33,45 +33,46 @@
 
 namespace {
 
-ui::XWindow::Configuration ConvertInitPropertiesToXWindowConfig(
-    const PlatformWindowInitProperties& properties) {
-  using WindowType = ui::XWindow::WindowType;
-  using WindowOpacity = ui::XWindow::WindowOpacity;
-  ui::XWindow::Configuration config;
+XWindow::WindowOpacity GetXWindowOpacity(PlatformWindowOpacity opacity) {
+  using WindowOpacity = XWindow::WindowOpacity;
+  switch (opacity) {
+    case PlatformWindowOpacity::kInferOpacity:
+      return WindowOpacity::kInferOpacity;
+    case PlatformWindowOpacity::kOpaqueWindow:
+      return WindowOpacity::kOpaqueWindow;
+    case PlatformWindowOpacity::kTranslucentWindow:
+      return WindowOpacity::kTranslucentWindow;
+  }
+  NOTREACHED() << "Uknown window opacity.";
+  return WindowOpacity::kInferOpacity;
+}
 
-  switch (properties.type) {
+XWindow::WindowType GetXWindowType(PlatformWindowType window_type) {
+  using WindowType = XWindow::WindowType;
+  switch (window_type) {
     case PlatformWindowType::kWindow:
-      config.type = WindowType::kWindow;
-      break;
+      return WindowType::kWindow;
     case PlatformWindowType::kMenu:
-      config.type = WindowType::kMenu;
-      break;
+      return WindowType::kMenu;
     case PlatformWindowType::kTooltip:
-      config.type = WindowType::kTooltip;
-      break;
+      return WindowType::kTooltip;
     case PlatformWindowType::kPopup:
-      config.type = WindowType::kPopup;
-      break;
+      return WindowType::kPopup;
     case PlatformWindowType::kDrag:
-      config.type = WindowType::kDrag;
+      return WindowType::kDrag;
       break;
     case PlatformWindowType::kBubble:
-      config.type = WindowType::kBubble;
-      break;
+      return WindowType::kBubble;
   }
+  NOTREACHED() << "Uknown window type.";
+  return WindowType::kWindow;
+}
 
-  switch (properties.opacity) {
-    case PlatformWindowOpacity::kInferOpacity:
-      config.opacity = WindowOpacity::kInferOpacity;
-      break;
-    case PlatformWindowOpacity::kOpaqueWindow:
-      config.opacity = WindowOpacity::kOpaqueWindow;
-      break;
-    case PlatformWindowOpacity::kTranslucentWindow:
-      config.opacity = WindowOpacity::kTranslucentWindow;
-      break;
-  }
-
+ui::XWindow::Configuration ConvertInitPropertiesToXWindowConfig(
+    const PlatformWindowInitProperties& properties) {
+  ui::XWindow::Configuration config;
+  config.type = GetXWindowType(properties.type);
+  config.opacity = GetXWindowOpacity(properties.opacity);
   config.bounds = properties.bounds;
   config.icon = properties.icon;
   config.force_show_in_taskbar = properties.force_show_in_taskbar;
@@ -83,7 +84,6 @@
   config.wm_class_class = properties.wm_class_class;
   config.wm_role_name = properties.wm_role_name;
   config.activatable = properties.activatable;
-  config.visual_id = properties.x_visual_id;
   config.prefer_dark_theme = properties.prefer_dark_theme;
   config.background_color = properties.background_color;
   return config;
diff --git a/ui/views/controls/slider.h b/ui/views/controls/slider.h
index f5389be..d08eebe 100644
--- a/ui/views/controls/slider.h
+++ b/ui/views/controls/slider.h
@@ -114,8 +114,8 @@
 
   void NotifyPendingAccessibilityValueChanged();
 
-  SkColor GetThumbColor() const;
-  SkColor GetTroughColor() const;
+  virtual SkColor GetThumbColor() const;
+  virtual SkColor GetTroughColor() const;
   int GetSliderExtraPadding() const;
 
   SliderListener* listener_;
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc
index 7705e7b4..88fa0ea 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc
@@ -119,10 +119,6 @@
   open_windows_ = nullptr;
 }
 
-void DesktopWindowTreeHostLinux::SetPendingXVisualId(int x_visual_id) {
-  pending_x_visual_id_ = x_visual_id;
-}
-
 gfx::Rect DesktopWindowTreeHostLinux::GetXRootWindowOuterBounds() const {
   // TODO(msisov): must be removed as soon as all X11 low-level bits are moved
   // to Ozone.
@@ -333,8 +329,6 @@
   properties->wm_class_class = params.wm_class_class;
   properties->wm_role_name = params.wm_role_name;
 
-  properties->x_visual_id = pending_x_visual_id_;
-
   DCHECK(!properties->x11_extension_delegate);
   properties->x11_extension_delegate = this;
 }
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h
index 99cc4190..6006632 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.h
@@ -55,10 +55,6 @@
   // internal list of open windows.
   static void CleanUpWindowList(void (*func)(aura::Window* window));
 
-  // This must be called before the window is created, because the visual cannot
-  // be changed after. Useful for X11. Not in use for Wayland.
-  void SetPendingXVisualId(int x_visual_id);
-
   // Returns the current bounds in terms of the X11 Root Window including the
   // borders provided by the window manager (if any). Not in use for Wayland.
   gfx::Rect GetXRootWindowOuterBounds() const;
@@ -129,11 +125,6 @@
   // other consumer handled them.
   std::unique_ptr<WindowEventFilterLinux> non_client_window_event_filter_;
 
-  // X11 may set set a visual id for the system tray icon before the host is
-  // initialized. This value will be passed down to PlatformWindow during
-  // initialization of the host.
-  base::Optional<int> pending_x_visual_id_;
-
   std::unique_ptr<CompositorObserver> compositor_observer_;
 
   std::unique_ptr<aura::ScopedWindowTargeter> targeter_for_modal_;
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
index a0424e9..9abbce89 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc
@@ -42,36 +42,43 @@
   return show_state == ui::SHOW_STATE_INACTIVE;
 }
 
+ui::PlatformWindowOpacity GetPlatformWindowOpacity(
+    Widget::InitParams::WindowOpacity opacity) {
+  switch (opacity) {
+    case Widget::InitParams::WindowOpacity::kInferred:
+      return ui::PlatformWindowOpacity::kInferOpacity;
+    case Widget::InitParams::WindowOpacity::kOpaque:
+      return ui::PlatformWindowOpacity::kOpaqueWindow;
+    case Widget::InitParams::WindowOpacity::kTranslucent:
+      return ui::PlatformWindowOpacity::kTranslucentWindow;
+  }
+  return ui::PlatformWindowOpacity::kOpaqueWindow;
+}
+
+ui::PlatformWindowType GetPlatformWindowType(
+    Widget::InitParams::Type window_type) {
+  switch (window_type) {
+    case Widget::InitParams::TYPE_WINDOW:
+      return ui::PlatformWindowType::kWindow;
+    case Widget::InitParams::TYPE_MENU:
+      return ui::PlatformWindowType::kMenu;
+    case Widget::InitParams::TYPE_TOOLTIP:
+      return ui::PlatformWindowType::kTooltip;
+    case Widget::InitParams::TYPE_DRAG:
+      return ui::PlatformWindowType::kDrag;
+    case Widget::InitParams::TYPE_BUBBLE:
+      return ui::PlatformWindowType::kBubble;
+    default:
+      return ui::PlatformWindowType::kPopup;
+  }
+  NOTREACHED();
+  return ui::PlatformWindowType::kPopup;
+}
+
 ui::PlatformWindowInitProperties ConvertWidgetInitParamsToInitProperties(
     const Widget::InitParams& params) {
   ui::PlatformWindowInitProperties properties;
-
-  switch (params.type) {
-    case Widget::InitParams::TYPE_WINDOW:
-      properties.type = ui::PlatformWindowType::kWindow;
-      break;
-
-    case Widget::InitParams::TYPE_MENU:
-      properties.type = ui::PlatformWindowType::kMenu;
-      break;
-
-    case Widget::InitParams::TYPE_TOOLTIP:
-      properties.type = ui::PlatformWindowType::kTooltip;
-      break;
-
-    case Widget::InitParams::TYPE_DRAG:
-      properties.type = ui::PlatformWindowType::kDrag;
-      break;
-
-    case Widget::InitParams::TYPE_BUBBLE:
-      properties.type = ui::PlatformWindowType::kBubble;
-      break;
-
-    default:
-      properties.type = ui::PlatformWindowType::kPopup;
-      break;
-  }
-
+  properties.type = GetPlatformWindowType(params.type);
   properties.activatable =
       params.activatable == Widget::InitParams::ACTIVATABLE_YES;
   properties.force_show_in_taskbar = params.force_show_in_taskbar;
@@ -80,22 +87,11 @@
   properties.visible_on_all_workspaces = params.visible_on_all_workspaces;
   properties.remove_standard_frame = params.remove_standard_frame;
   properties.workspace = params.workspace;
+  properties.opacity = GetPlatformWindowOpacity(params.opacity);
 
   if (params.parent && params.parent->GetHost())
     properties.parent_widget = params.parent->GetHost()->GetAcceleratedWidget();
 
-  switch (params.opacity) {
-    case Widget::InitParams::WindowOpacity::kInferred:
-      properties.opacity = ui::PlatformWindowOpacity::kInferOpacity;
-      break;
-    case Widget::InitParams::WindowOpacity::kOpaque:
-      properties.opacity = ui::PlatformWindowOpacity::kOpaqueWindow;
-      break;
-    case Widget::InitParams::WindowOpacity::kTranslucent:
-      properties.opacity = ui::PlatformWindowOpacity::kTranslucentWindow;
-      break;
-  }
-
   return properties;
 }
 
diff --git a/weblayer/browser/content_browser_client_impl.cc b/weblayer/browser/content_browser_client_impl.cc
index b55e8fe2..186ad1a 100644
--- a/weblayer/browser/content_browser_client_impl.cc
+++ b/weblayer/browser/content_browser_client_impl.cc
@@ -341,7 +341,6 @@
   std::vector<std::unique_ptr<content::NavigationThrottle>> throttles;
   throttles.push_back(std::make_unique<SSLErrorNavigationThrottle>(
       handle, std::make_unique<SSLCertReporterImpl>(),
-      BrowserProcess::GetInstance()->GetNetworkTimeTracker(),
       base::BindOnce(&HandleSSLError), base::BindOnce(&IsInHostedApp)));
   return throttles;
 }
diff --git a/weblayer/browser/ssl_error_handler.cc b/weblayer/browser/ssl_error_handler.cc
index 637bb8c7bd..67ce913 100644
--- a/weblayer/browser/ssl_error_handler.cc
+++ b/weblayer/browser/ssl_error_handler.cc
@@ -191,7 +191,6 @@
     const net::SSLInfo& ssl_info,
     const GURL& request_url,
     std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
-    network_time::NetworkTimeTracker* network_time_tracker,
     base::OnceCallback<
         void(std::unique_ptr<security_interstitials::SecurityInterstitialPage>)>
         blocking_page_ready_callback) {
@@ -209,8 +208,8 @@
 
     const base::Time now = base::Time::NowFromSystemTime();
 
-    ssl_errors::ClockState clock_state =
-        ssl_errors::GetClockState(now, network_time_tracker);
+    ssl_errors::ClockState clock_state = ssl_errors::GetClockState(
+        now, BrowserProcess::GetInstance()->GetNetworkTimeTracker());
 
     if (clock_state == ssl_errors::CLOCK_STATE_FUTURE ||
         clock_state == ssl_errors::CLOCK_STATE_PAST) {
diff --git a/weblayer/browser/ssl_error_handler.h b/weblayer/browser/ssl_error_handler.h
index 0ae1572..7932928 100644
--- a/weblayer/browser/ssl_error_handler.h
+++ b/weblayer/browser/ssl_error_handler.h
@@ -18,10 +18,6 @@
 
 class SSLCertReporter;
 
-namespace network_time {
-class NetworkTimeTracker;
-}
-
 namespace weblayer {
 
 using BlockingPageReadyCallback = base::OnceCallback<void(
@@ -44,7 +40,6 @@
                     const net::SSLInfo& ssl_info,
                     const GURL& request_url,
                     std::unique_ptr<SSLCertReporter> ssl_cert_reporter,
-                    network_time::NetworkTimeTracker* network_time_tracker,
                     BlockingPageReadyCallback blocking_page_ready_callback);
 
 // Pass true to simulate the OS reporting that SSL errors are due to captive